私は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}
になりますが、json
はtoString
からのHashMap
だけではないということです。
元のJSON
を入手するにはどうすればよいですか?
class
をマップするresponse
がなく、map
クラスを作成するソリューションではないため、Object.class.
を使用します
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);
_
GoogleのGsonライブラリを使用して、任意のオブジェクトをJSONに変換できます。 LinkedHashMapをjsonに変換する例を示します-
Gson gson = new Gson();
String json = gson.toJson(map,LinkedHashMap.class);
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();
}
次のコードを使用して問題を解決しました:
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();
}