【问题标题】:how to add values if same date repeats from json如果从 json 重复相同的日期,如何添加值
【发布时间】:2018-08-20 03:32:29
【问题描述】:

我正在开发一个具有图形值的 android 应用程序。我在这里挣扎。服务器返回这样的 json 对象

[{
    "date": "01-03-2018",
    "value": "12",
    },
    {
    "id": "01-03-2018",
    "value": "8",
    },
    {
    "id": "02-03-2018",
    "value": "3",
    },
    {
    "id": "03-03-2018",
    "value": "5",
    },
    {
    "id": "03-03-2018",
    "value": "8",
    },
    {
    "id": "04-03-2018",
    "value": "21",
    }]

在android中添加到arraylist之前,json应该像这样转换

[{
    "date": "01-03-2018",
    "value": "20",
    },

    {
    "id": "02-03-2018",
    "value": "3",
    },
    {
    "id": "03-03-2018",
    "value": "13",
    },
    {
    "id": "04-03-2018",
    "value": "21",
    }]

请帮助我!提前致谢

【问题讨论】:

  • 为什么要把它转换成这个json?而是添加条件以检查是否在 arraylist 中添加重复值
  • 如果您不明白,请在此处添加您的代码
  • U 可以将 JSON 数组存储到一个 Set 这个 customClass 将有一个字段 id 和 Value 并且这个类必须实现 equals 和 HashCode。
  • 您只需根据需要对集合进行排序。指定你想要什么,你需要如何对数据进行排序

标签: java android html json


【解决方案1】:

我认为没有必要将 JSON 字符串转换为另一个 JSON 字符串。 取而代之的是,您可以直接使用 ArrayList 或 HashMap 来存储数据。

如果您想使用 HashMap,请查看下方

Map<String, Integer> map = new HashMap<>();

for (int i = 0; i < jsonArray.length; i++) {
    JSONObject list = jsonArray.getJSONObject(i);
    String key = list.getString("date");
    if (!map.containsKey(key) {
        map.put(key, list.getInt("value");
    } else {
        int val = map.get(key) + list.getInt("value");
        map.put(key, val);
    }
}

【讨论】:

  • 地图不符合您的顺序。如果你不需要维护它。那我觉得挺好的。
  • @KushaalSingla 如果要保持顺序,可以使用LinkedHashMap 而不是HahMap
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-06-17
  • 2015-10-09
  • 2019-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-10
相关资源
最近更新 更多