web-dev-qa-db-ja.com

LinkedHashMapからJson文字列に変換

私はJongoを使用してMongoで作業しています。クエリを実行すると、結果としてLinkedHashMapを受け取ります。

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

問題は、jsonが{"user":"something"}の場合、コンテンツは{user=something}になりますが、jsontoStringからのHashMapだけではないということです。

元のJSONを入手するにはどうすればよいですか?

classをマップするresponseがなく、mapクラスを作成するソリューションではないため、Object.class.を使用します

11
user1655510

JSONライブラリにアクセスできる場合は、それが適切な方法のようです。

Org.jsonライブラリを使用する場合は、 public JSONObject(Java.util.Map map) を使用します。

_String jsonString = new JSONObject(data).toString()
_

Gsonの場合、@ hellboyが言及する gson.toJson() メソッドを使用します。

_String jsonString = new Gson().toJson(data, Map.class);
_
20
ethanbustad

GoogleのGsonライブラリを使用して、任意のオブジェクトをJSONに変換できます。 LinkedHashMapをjsonに変換する例を示します-

Gson gson = new Gson();
String json = gson.toJson(map,LinkedHashMap.class);
5
hellboy

Com.mongodb.BasicDBObjectコンストラクターの1つは、マップを入力として受け取ります。次に、BasicDBObjectオブジェクトでtoString()を呼び出すだけです。

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

次のコードを使用して問題を解決しました:

    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