JSONObject仅复制HashMap的最后一个值

时间:2017-06-11 09:11:56

标签: java android json

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

OutPut:E / JSON:{“ID”:3}它很有趣!!!!

我希望得到像

这样的东西
{"ID":1},{"ID":2},{"ID":3}

2 个答案:

答案 0 :(得分:1)

那是对的。如果密钥已退出,则Map#put会覆盖该值。在你的情况下:

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

您正在重复使用密钥"ID"。您的地图只包含一对key/value ID/3。从文档(HashMap#put

  

将指定的值与此映射中的指定键相关联。如果   地图以前包含键的映射,旧值是   替换。

另一方面,相同的json对象不能多次包含相同的密钥。

答案 1 :(得分:1)

Json和地图是基于密钥的。

您的对象键必须唯一,否则将被替换。

您应该使用不同的键:

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

或使用地图数组。