dimanche 18 mai 2014

Java - Convert de LinkedHashMap à chaîne Json - Stack Overflow


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.




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



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



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


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.



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


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


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

0 commentaires:

Enregistrer un commentaire