从LinkedHashMap转换为Json String

我正在使用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只是来自HashMap的toString方法。

我怎么能得到原始的JSON?

我没有用于映射响应的类,并且它不是创建map类的解决方案,这就是我使用Object.class的原因。

如果您可以访问某些JSON库,那么这似乎就是这样。

如果使用org.json库,请使用public JSONObject(java.util.Map map)

 String jsonString = new JSONObject(data).toString() 

如果是Gson,请使用gson.toJson()提到的gson.toJson()方法:

 String jsonString = new Gson().toJson(data, Map.class); 

您可以使用Google的Gson库将任何对象转换为JSON。 这是一个将LinkedHashMap转换为json的示例 –

 Gson gson = new Gson(); String json = gson.toJson(map,LinkedHashMap.class); 

其中一个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(); } 

我使用以下代码解决了这个问题:

  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(); } 
 String content = data.toString() .replaceAll("=", "\":\"") .replaceAll(",", "\",\"") .replaceAll("}", "\"}") .replaceAll("{", "{\"");