0

我的 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 秒)。有没有更好的方法来做到这一点?

4

1 回答 1

0

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

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

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

于 2020-11-12T23:55:22.297 回答