如何通过java解析组合多级数组的巨大json数据

时间:2018-03-23 23:11:43

标签: java json parsing

我正在尝试解析巨大的JSON数据。我不能在这个问题中给出JSON内容。但您可以在此链接中看到实际数据: -

https://drive.google.com/file/d/1p3lfaQ_k3C9DB3qA3W72IGiefwLUhCzm/view

我知道有像GSON和Jackson这样的热门图书馆。我厌倦了GSON: -

    JsonParser jsonParser = new JsonParser();
    JsonElement element = jsonParser.parse(line); // line contains all json data

但是JsonElement没有合适的方法来通过json密钥获取数据。

我的意图是解析json数据中数组的数据。我该怎么办?

2 个答案:

答案 0 :(得分:0)

您可以使用这个简单的json库

<dependency>
    <groupId>org.json</groupId>
    <artifactId>json</artifactId>
    <version>20180130</version>
</dependency>

如果我理解正确的话,它具有您需要的用户友好界面

        JSONObject obj = new JSONObject("jsoncontent");
        JSONArray arr = obj.getJSONArray("arraykey");
        Integer i=obj.getInt("someintegerfield");
        JSONObject aob = obj.getJSONObject("anotherobject");

答案 1 :(得分:0)

JsonElement是GSON解析器返回的所有节点的父类。在您的情况下,根节点是JsonObject,因此将元素强制转换为该节点或使用便捷存取器getAsJsonObject是安全的。

JsonObject拥有您进行字段访问所需的API,JsonArray具有用于阵列访问的API:

JsonElement root = new JsonParser()
    .parse(new FileReader("data.json"));

JsonArray data = root.getAsJsonObject()
    .getAsJsonObject("dataset_data")
    .getAsJsonArray("data");

System.out.println(data.size());