从 LinkedHashMap 转换为 Json 字符串
Posted
技术标签:
【中文标题】从 LinkedHashMap 转换为 Json 字符串【英文标题】:Convert from LinkedHashMap to Json String 【发布时间】:2014-05-17 05:26:26 【问题描述】:我正在使用 Jongo 与 Mongo 一起工作,当我进行查询时,我收到 LinkedHashMap
作为结果。
Iterator one = (Iterator) friends.find(query).projection("_id:0").as(Object.class);
while (one.hasNext())
LinkedHashMap data = new LinkedHashMap();
data = (LinkedHashMap) one.next();
String content = data.toString();
问题是如果 json 是 "user":"something"
内容将是 user=something
,它不是 json
只是 toString
来自 HashMap
的方法。
我怎样才能得到原始的JSON
?
我没有class
来映射response
,创建map
类也不是解决方案,这就是我使用Object.class.
的原因
【问题讨论】:
datos
的类型是什么?
【参考方案1】:
如果您可以访问一些 JSON 库,似乎就是这样。
如果使用 org.json 库,请使用 public JSONObject(java.util.Map map)
:
String jsonString = new JSONObject(data).toString()
如果是Gson,使用@hellboy提到的gson.toJson()
方法:
String jsonString = new Gson().toJson(data, Map.class);
【讨论】:
对于 JSONObject(),仅适用于 Map您可以使用 Google 的 Gson 库将任何对象转换为 JSON。这是一个将 LinkedHashMap 转换为 json 的示例 -
Gson gson = new Gson();
String json = gson.toJson(map,LinkedHashMap.class);
【讨论】:
【参考方案3】:com.mongodb.BasicDBObject 构造函数之一将 Map 作为输入。然后你只需要在 BasicDBObject 对象上调用 toString()。
Iterator one = (Iterator) friends.find(query).projection("_id:0").as(Object.class);
while (one.hasNext())
LinkedHashMap data= new LinkedHashMap();
data= (LinkedHashMap) one.next();
com.mongodb.BasicDBObject bdo = new com.mongodb.BasicDBObject(data);
String json = bdo.toString();
【讨论】:
【参考方案4】:我使用以下代码解决了这个问题:
Iterator one = (Iterator) friends.find(query).projection("_id:0").as(Object.class);
while (one.hasNext())
Map data= new HashMap();
data= (HashMap) one.next();
JSONObject d = new JSONObject();
d.putAll(data);
String content=d.toString();
【讨论】:
以上是关于从 LinkedHashMap 转换为 Json 字符串的主要内容,如果未能解决你的问题,请参考以下文章
为啥我的 LinkedHashMap 被错误地转换为 JSON 并保存在 SharedPreferences 中?
如何将 LinkedHashMap 转换为自定义 java 对象?
类 java.util.LinkedHashMap 不能转换为类 [...]
如何将 Scala Spark Dataframe 转换为 LinkedHashMap[String, String]
Jackson JSON + Java 泛型获取 LinkedHashMap
java.lang.ClassCastException:com.google.gson.internal.LinkedTreeMap 无法转换为 java.util.LinkedHashMap