我的spring应用程序向服务器发出rest请求,来自服务器的响应是一个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秒)。有没有更好的方法呢?
发布于 2020-11-13 07:55:22
我想说的是,使用jackson-databind的ObjectMapper将200MB的JSON块转换成一个对象几乎总是会消耗大量的计算时间,而且还会消耗大量的内存。
如果你不需要一次在内存中使用JSON所表示的整个对象,也就是说,它的一大块就足够了,我建议切换到一种利用jackson's streaming API的方法。您可以在JSON的较小子集上将其与databind结合,将生成的DTO传递给某个使用者(一种访问者模式)。
我希望这对你的特殊用例有任何帮助。
https://stackoverflow.com/questions/64752148
复制相似问题