2017-06-11 7 views
0
HashMap<String, Integer> map = new HashMap<>(); 
    map.put("ID", 1); 
    map.put("ID", 2); 
    map.put("ID", 3); 

    JSONObject jsonObject = new JSONObject(map); 
    Log.e("JSON", jsonObject.toString()); 

出力の最後の値がコピーその面白いを!!!!JSONObjectのみのHashMap

私は正しいです

{"ID":1},{"ID":2},{"ID":3} 
+0

あなたは何を期待しているのですか? – Fusselchen

答えて

1

のようなものを得ることを期待しています。 Map#putは、キーがすでに終了している場合に値を上書きします。あなたの場合:

HashMap<String, Integer> map = new HashMap<>(); 
map.put("ID", 1); 
map.put("ID", 2); 
map.put("ID", 3); 

"ID"を再利用しています。あなたのマップに含まれているのはkey/valueID/3です。ドキュメントから(HashMap#put

このマップで指定されたキーに指定した値を関連付けます。 マップに以前にキーのマッピングが含まれていた場合、古い値は に置き換えられました。

一方、同じjsonオブジェクトは、同じキーを複数回含むことはできません。

1

Jsonとマップはキーベースです。

オブジェクトキーはユニークででなければなりません。それ以外の場合は置き換えられます。

HashMap<String, Integer> map = new HashMap<>(); 
map.put("ID_1", 1); 
map.put("ID_2", 2); 
map.put("ID_3", 3); 

のか、マップの配列を使用します。

あなたは異なるキーを使用する必要があります。

関連する問題