如何将大型 JSON 字符串转换为 JSON 对象?

Posted

技术标签:

【中文标题】如何将大型 JSON 字符串转换为 JSON 对象?【英文标题】:How to convert a large JSON string to JSON Object? 【发布时间】:2021-02-21 09:39:23 【问题描述】:

我的 spring 应用程序向服务器发出了一个休息请求,并且来自服务器的响应是一个 JSONObject 字符串。 JSON 字符串非常大(200MB)。我想将 json 字符串转换为 JSONObject。以下是我的转换代码:

exchange = restTemplate.exchange(Url, HttpMethod.POST, postEntity, String.class);
jsonObject = objectMapper.readValue(exchange.getBody(), JSONObject.class);

对于单个请求,转换需要 3-5 秒。但是,如果有多个请求,则转换需要很长时间(并行 8-10 个请求需要 60 秒)。 有没有更好的方法来做到这一点?

【问题讨论】:

似乎您已经发布了 2 个 eual 问题。我建议你删除其中一个。 【参考方案1】:

我想说的是,使用 jackson-databind 的 ObjectMapper 将 200MB 的 JSON 块转换为对象几乎总是会消耗大量的计算时间和大量的内存。

如果您不需要一次在内存中使用 JSON 表示的整个对象,i. e.大块就足够了,我建议切换到使用jackson's streaming API 的方法。您可以将它与 JSON 的较小子集上的数据绑定结合起来,将生成的 DTO 传递给某些消费者(一种访问者模式)。

我希望这对您的特殊用例有所帮助。

【讨论】:

以上是关于如何将大型 JSON 字符串转换为 JSON 对象?的主要内容,如果未能解决你的问题,请参考以下文章

如何将数据实体转换为 JSON 字符串

json字符串转换成对象,对象为空,如何解决

如何在 Node.js 中使用流对大型嵌套对象进行 JSON 字符串化?

如何将数据实体转换为 JSON 字符串

JavaScript:如何将JSON对象转换成JSON字符串呢

如何将 javascript 对象转换成 json字符串