【问题标题】:OutOfMemoryError when Jackson deserializes JSON object当杰克逊反序列化 JSON 对象时出现 OutOfMemoryError
【发布时间】:2019-06-07 20:49:29
【问题描述】:

我有一个非常大的 JSON 文件的问题,该文件太大而无法在 JsonNode 中使用 ObjectMapper.readValue()。我想使用Out of memory error while parsing a large JSON using Jackson library on Android 中的解决方案,除了 JSON 文件是单个对象,其字段名称事先不知道,因此我无法创建模型 POJO 来反序列化。

对象内部的每个属性都具有相同的格式,我可以忽略这些内部对象的许多属性(我已经有一个 POJO 类来对其进行建模)。如果 JSON 文件是数组而不是对象,我会更容易解决这个问题。 (我不是创建文件的人,只是从中读取。)

(我在下面发布我的解决方案,但我希望有更好的解决方案!)

【问题讨论】:

    标签: java json jackson


    【解决方案1】:

    由于无法在 ObjectMapper 中加载原始文件,我决定解析 JSON 文件并将其重写为数组。逐行读取和写入,我转换了一个看起来像这样的文件(但要大得多):

    {
        "Unexpected Monkey" : {
            "name" : "UnexpectedMonkey",
            "age" : 7
        },
        "Another Unexpected Name" : {
            "name" : "Another Unexpected Name",
            "age" : 2
        }
    }
    

    进入:

    [
        {
            "name" : "UnexpectedMonkey",
            "age" : 7
        },
        {
            "name" : "Another Unexpected Name",
            "age" : 2
        }
    ]
    

    然后我可以像How to parse a JSON string to an array using Jackson一样解析文件

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-04-07
      • 2013-05-11
      • 2019-11-15
      • 2014-06-10
      • 2016-12-07
      • 2017-11-16
      • 2021-06-18
      相关资源
      最近更新 更多