处理巨大的json ...
通知
清除全部

处理巨大的JSON回复

RSS

(@sathish)
成员 主持人
加入:2年前
帖子:1391
16/06/2021 12:21 PM

我认为我需要重写应用程序的一些模块,因为当渲染的实体数量增加时,它也会失败并出现错误。目前,我正在使用杰克逊(Jackson)httpcliend。尽管我对杰克逊(Jackson)的信任,但有些事情告诉我,问题是第二次lib。能httpcliend处理大量回应?(例如。这个大约是400行)

除此之外,在我的应用程序中,我解析的方式是这样的:

上市目的处理(httpresponse响应,字符串rootname){尝试{字符串json = entityutils.tostring(response.getentity());//更好的“ new basic responsehandler()。处理(响应)” ????intstatusCode = wendment.getStatusline()。getStatusCode();如果(状态密码> =200&& statuscode <300){返回CreateObject(JSON,rootName);}别的{返回无效的;}}}抓住(异常e){新的RuntimeException(e);}}}上市目的createObject(字符串JSON,字符串rootname){尝试{这个.root =这个.mapper.readtree(JSON);字符串className = finder.findclassname(rootName);class clazz =这个.getObjectClass(className);返回mapper.treetovalue(root.get(rootname),clazz);}抓住(异常e){新的RuntimeException(e);}}}

我如何改善此代码以提高大量响应效率?


引用
(@abhijith)
贵族成员
加入:2年前
帖子:1350
16/06/2021 12:24 PM

无需创建字符串JSON, 作为ObjectMapper#readTree可以接受Inputstream也是。例如,这将更加有效:

上市目的处理(httpresponse响应,字符串rootname){尝试{intstatusCode = wendment.getStatusline()。getStatusCode();如果(状态密码> =200&& statuscode <300){返回createObject(response.getentity()。getContent(),rootName);}别的{返回无效的;}}}抓住(异常e){新的RuntimeException(e);}}}上市目的createObject(inputstream json,字符串rootname){尝试{这个.root =这个.mapper.readtree(JSON);字符串className = finder.findclassname(rootName);class clazz =这个.getObjectClass(className);返回mapper.treetovalue(root.get(rootname),clazz);}抓住(异常e){新的RuntimeException(e);}}}

回复引用
分享:
Baidu