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

标签 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格式

最佳答案

您使用哪种 JSON 映射器? jackson ,GSON,...?

请提供一些代码。这样我们就可以看到您在做什么。


如果您使用 Java 创建 JSON 对象,您应该有一个 Java 对象结构,对吧?

类似这样的事情:

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 中。

关于java - 使用 java 将相同日期的 JSON 数据分组在一起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37630350/

相关文章:

java - 如何在启动时将 JVM 选项传递给 jshell

图标路径中的 Java 非法转义字符

c# - dotnet core System.Text.Json 转义 unicode 字符串

ruby-on-rails - Json.jbuilder合并2个json数据并发送给一个key

ios - 使用 UICollectionView 执行 Segue 时出错

java - 如何重新分配 StringBuffer 的值?

java - 将抽取的卡片与 ArrayList 中的 gif 进行匹配?

java - 存储和管理(正确反序列化对象以及反序列化后如何使用它们

java - 如何在android中检查日期(从json文件获取)是之前还是之后?

json - 将目录及其子目录的内容转换为 JSON