21

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 isn't a solution create a map class, that is why I use a Object.class.

Harshal Parekh
  • 5,918
  • 4
  • 21
  • 43
user1655510
  • 247
  • 1
  • 3
  • 10

5 Answers5

38

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);
ethanbustad
  • 1,594
  • 1
  • 16
  • 27
  • 5
    for JSONObject(), only works for a Map! (http://stackoverflow.com/questions/12155800/how-to-convert-hashmap-to-json-object-in-java) – nommer Dec 17 '16 at 01:26
  • you can use `String jsonString = new JSONObject(data).toJSONString()` if that helps – pkanane Sep 10 '22 at 22:53
7

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);
hellboy
  • 2,222
  • 1
  • 14
  • 19
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();
    }
jarry_dk
  • 161
  • 1
  • 8
0

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();
    }
user1655510
  • 247
  • 1
  • 3
  • 10
0
if(data instanceof LinkedHashMap){
   json=new Gson.toJson(data,Map.class).toString();
}
else{
  json=data.toString();
}
return Document.parse(json);