pva*_*rma 0 java json group-by
我有以下格式的JSON数据。
[{
"id": 16966,
"post": "This is about road!",
"category": "road",
},
.
.
.]
Run Code Online (Sandbox Code Playgroud)
我想根据其类别对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.
}
Run Code Online (Sandbox Code Playgroud)
然后:
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));
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
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]]
Run Code Online (Sandbox Code Playgroud)
我在文件中添加了一些条目。我想您也可以编写自己的反序列化器,以在拥有临时列表并直接存储在地图中时摆脱该步骤,但是您要求一种简单的方法:-)。还要注意,我正在使用java-8和Gson,但是如果没有它,您也可以实现这一点(但是您将编写更多代码)。
| 归档时间: |
|
| 查看次数: |
2893 次 |
| 最近记录: |