web-dev-qa-db-fra.com

Convertir de LinkedHashMap en chaîne Json

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.

11
user1655510

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

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

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

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