24

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
6,0374 gold badges25 silver badges46 bronze badges
asked Apr 4, 2014 at 18:38
1
  • What is the type of datos? Commented Apr 4, 2014 at 18:49

5 Answers 5

39

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);
answered Apr 4, 2014 at 20:24
Sign up to request clarification or add additional context in comments.

2 Comments

for JSONObject(), only works for a Map<String, String>! (stackoverflow.com/questions/12155800/…)
you can use String jsonString = new JSONObject(data).toJSONString() if that helps
8

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);
answered Apr 4, 2014 at 19:10

Comments

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();
 }
answered Mar 3, 2015 at 6:48

Comments

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();
 }
answered Apr 4, 2014 at 20:38

Comments

0
if(data instanceof LinkedHashMap){
 json=new Gson.toJson(data,Map.class).toString();
}
else{
 json=data.toString();
}
return Document.parse(json);
answered May 25, 2022 at 10:49

Comments

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.