首页 > 解决方案 > Jackson 反序列化最大深度级别

问题描述

使用Spring Boot应用程序,我发布了带有10000 个嵌套元素的 JSON ,如下图所示,并得到了java.lang.StackOverflowError.

{
"__id": "1",
"__category":{
      "key1": {
        "key2": {
            "key3": {
                ...
                ...
                "key10000": "value"
                ...
                ...
            }
        }
      }
    }
}

有什么方法可以使这个错误更易于管理?

我的意思是,我不想避免这个错误,而是做一些类似自定义反序列化器的事情来设置一个允许嵌套的值,如果超过这个值就会抛出一些异常。

标签: javajsonspringserializationjackson

解决方案


您可以尝试使用Jackson Streaming API而不必一次反序列化整个事情。这是处理大型 JSON 对象或数组时推荐的方法。

这允许您单独反序列化和处理组件,而不需要整个 JSON 对象存在于内存中。


推荐阅读