Je travaille avec Mongo en utilisant Jongo, quand je fais une requête, je reçois un LinkedHashMap
comme résultat.
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();
}
le problème est que si le json est {"user":"something"}
le contenu sera {user=something}
, ce n'est pas une méthode json
n'est que toString
de HashMap
.
Comment puis-je obtenir l'original JSON
?
Je n'ai pas de class
pour mapper le response
et ce n'est pas une solution de créer une classe map
, c'est pourquoi j'utilise un Object.class.
Si vous avez accès à une bibliothèque JSON, il semble que c'est la voie à suivre.
Si vous utilisez la bibliothèque org.json, utilisez public JSONObject(Java.util.Map map)
:
String jsonString = new JSONObject(data).toString()
Si Gson, utilisez la méthode gson.toJson()
mentionnée par @hellboy:
String jsonString = new Gson().toJson(data, Map.class);
Vous pouvez utiliser la bibliothèque Gson de Google pour convertir n'importe quel objet en JSON. Voici un exemple pour convertir LinkedHashMap en json -
Gson gson = new Gson();
String json = gson.toJson(map,LinkedHashMap.class);
L'un des constructeurs com.mongodb.BasicDBObject prend une carte en entrée. Il vous suffit ensuite d'appeler toString () sur l'objet BasicDBObject.
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();
}
J'ai résolu le problème en utilisant le code suivant:
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();
}