如何将哈希映射放在JSONObject中?

2019年3月2日 6点热度 0条评论

我需要从Android向Algolia发送数据,发送的数据应为JSONObject格式(导入org.json.JSONObject)

Algolia 的数据应采用这种格式

"_geoloc": {
  "lat": 40.639751,
  "lng": -73.778925
}

所以在Android中,我将代码设置如下

val jsonObject = JSONObject()

val locHashMap = hashMapOf(
   "lat" to coordinate.latitude,
   "lng" to coordinate.longitude
)


jsonObject.put("_geoloc",locHashMap)

 index.addObjectAsync(jsonObject)

但不幸的是,我得到了这个错误:

java.lang.NoSuchMethodError: No virtual method put(Ljava/lang/String;Ljava/util/Map;)Lorg/json/JSONObject; in class Lorg/json/JSONObject; or its super classes (declaration of 'org.json.JSONObject' appears in /system/framework/core-libart.jar)

在这行代码
jsonObject.put("_geoloc",locHashMap)

所以我应该怎么做才能以JSONObject格式发送哈希图数据?

解决方案如下:

我可能是错的,但是请尝试这种方式。

错误提示,没有方法将Map放置为JSON值,但是您可以放置​​一个String(JSON对象作为字符串),这样很好,因此YourHasMap.toString()完成了

在代码java中:
jsonObject.put(“_ geoloc”, locHashMap.toString())
index.addObjectAsync(jsonObject)