根据JSON字段

时间:2016-04-18 15:57:25

标签: java gson

我尝试使用Gson流API解析Wikidata JSON dump,因为该文件大约是70GB的json。该文件的整体结构如下:

[
{"type":"item",... other fields ...},
{"type":"property",... other fields ...},
.....
]

这是一个对象数组,其中每个对象可以是itemproperty类型,我想实例化一个不同的类(即我在Java中有一个对应的Item和Property类代码)根据我遇到的对象。

基本上,我想查看type字段,然后相应地解析以下JSON。由于JsonReader似乎没有提供getNextJsonObject()或类似功能,除了预处理整个文件并将条目分成两个单独的文件之外,有没有办法做到这一点?该文件非常大,以至于当我可以动态执行所有操作时,我希望避免额外的预处理步骤。

1 个答案:

答案 0 :(得分:0)

经过一番思考,我实际上找到了一个非常简单的解决方案。 Gson API提供了方法:

Gson.fromJson(JsonReader reader, Class class)

这将从阅读器读取下一个对象并反序列化为您作为参数传递的类。因为在我的情况下,我不知道要序列化的哪个类,我可以执行以下操作:

JsonObject asd = gson.fromJson(reader, JsonObject.class);
if (asd.get("type").getAsString().equals("item")) {
    // Instantiate item
} else {
    // Instantiate property
}