gpt4 book ai didi

java - 对 JSON 对象使用 group-by 类型的操作

转载 作者:行者123 更新时间:2023-12-01 07:24:30 25 4
gpt4 key购买 nike

我有以下格式的 JSON 数据。

 [{
"id": 16966,
"post": "This is about road!",
"category": "road",
},
.
.
.]

我想根据类别对 JSON 条目进行分组。因此,我将在一个数据结构中获取所有与道路相关的条目(例如列表)。我知道我可以将数据放入Mongo DB甚至关系数据库中并进行查询。如果不这样做,是否有一些简单的方法可以做到这一点?

最佳答案

如果您要读取整个 JSON 文件,一个简单的方法是首先将所有条目读取到 List<Data> 中。然后将它们分组在Map<String, List<Data>>中.

class Data {
private int id;
private String post;
private String category;

//getter, equals, hashcode, toString, etc.
}

然后:

public class Test {    
public static void main(String args[] ) throws Exception {
Gson gson = new Gson();
List<Data> list = gson.fromJson(new BufferedReader(new FileReader("myJson.json")), new TypeToken<List<Data>>(){}.getType());
Map<String, List<Data>> groupedMap = list.stream().collect(Collectors.groupingBy(Data::getCategory));

groupedMap.forEach((k, v) -> System.out.println(k + " => " + v));
}
}

输出:

road => [Data [id=16966, post=This is about road!, category=road], Data [id=16965, post=This is about road!, category=road]]
land => [Data [id=16961, post=This is about land!, category=land]]

我向文件中添加了一些条目。我想您也可以编写自己的反序列化器,以摆脱当您有临时列表并直接存储在 map 中时的步骤,但您要求一种简单的方法:-)。另请注意,我正在使用 和 Gson,但您也可以在没有它的情况下实现此目的(但您将编写更多代码)。

关于java - 对 JSON 对象使用 group-by 类型的操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27685829/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com