Convert from LinkedHashMap to Json String

非 Y 不嫁゛ 提交于 2019-11-27 16:25:59

问题


I'm Workin with Mongo using Jongo, when I do a query I receive a LinkedHashMap as result.

        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();
        }

the problem is that if the json is {"user":"something"} content will be {user=something}, it is not a json is only toString method from HashMap.

How I can get the original JSON?.

I don't have a class to map the response, and it is not a solution create a map class, that is why I use a Object.class.


回答1:


If you have access to some JSON library, it seems like that's the way to go.

If using org.json library, use public JSONObject(java.util.Map map):

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

If Gson, use the gson.toJson() method mentioned by @hellboy:

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



回答2:


You can use Gson library from Google to convert any object to JSON. Here is an example to convert LinkedHashMap to json -

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



回答3:


One of the com.mongodb.BasicDBObject constructors takes a Map as input. Then you just have to call the toString() on the BasicDBObject object.

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:


I resolved the problem using the following code:

    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();
    }



回答5:


String content = data.toString()
.replaceAll("=", "\":\"")
.replaceAll(",", "\",\"")
.replaceAll("}", "\"}")
.replaceAll("{", "{\"");


来源:https://stackoverflow.com/questions/22870584/convert-from-linkedhashmap-to-json-string

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!