使用java将相同日期的JSON数据分组在一起

时间:2016-06-04 12:40:19

标签: java json

我创建了一个使用java的json对象,它的值在下面给出

{
  "result":[
    {"ID":7252,"Age":52,"Date":"2015-11-25","DAY":"Wednesday","Gender":"M"},
    {"ID":7252,"Age":52,"Date":"2015-12-05","DAY":"Saturday","Gender":"M"},
    ....
  ],
  "status":"ok"
}

我需要按照日期对数据进行分组,所需格式如下所示

{
  "result":[
    {"2015-11-25":[
      {"ID":7252,"Age":52,"Date":"2015-11-25","DAY":"Wednesday","Gender":"F"},
      {"ID":7252,"Age":52,"Date":"2015-11-25","DAY":"Wednesday","Gender":"M"}
    ]},
    {"2015-10-25":[
      {"ID":7252,"Age":52,"Date":"2015-10-25","DAY":"Tuesday","Gender":"F"},
      {"ID":7252,"Age":52,"Date":"2015-10-25","DAY":"Tuesday","Gender":"M"}
    ]},
  ],
  "status":"ok"
}

基本上我需要在JSON中将所有相同的日期数据组合在一起 以日期为关键 如何使用java

实现此JSON格式

1 个答案:

答案 0 :(得分:3)

你使用什么样的JSON映射器?杰克逊,GSON,......?

请提供一些代码。所以我们可以看到你在做什么。

如果使用Java创建了JSON对象,那么你应该有一个Java Object结构,对吗?

这样的事情:

class Data {
  int id;
  int age;
  LocalDate date;
  ...
}

在某处您的数据的数组/列表:

List<Data> result = new ArrayList<>();
result.add(data1);
result.add(data2);
result.add(data3);

然后,您可以使用Java8 Stream API对数据进行分组:

Map<LocalDate, Data> grouped = result
    .stream()
    .collect(
        Collectors.groupingBy(Data::getDate)
    );

结果将是Map。您的结果应为List

因此,您应该能够简单地遍历Map并将其插入新的List