在java中解析json更快

时间:2012-09-04 14:54:08

标签: java json parsing

我有这个场景。我将向Web服务发送请求,并获取XML响应。使用json.lib中的XML类将XML转换为JSON。从Web服务获得响应的时间是7秒,解析需要大约4-8秒。然后,我需要做的就是将JSON解析为一种非常理想的格式。

Ex:转换XML后的JSON

{"Response":{"Response":{"type" : [{1,2,3}]},"value":[{100,200,300}]}}

我正在将此JSON转换为以下格式

[{"type":1,"value":100},{"type":2,"value":200},{"type":3,"value":300}]

问题是,这种特殊的JSON转换 - > JSON占用了大量的时间,所以不是在15秒内显示结果,而是花费大约25秒,最糟糕的是,如果JSON有点大,则需要90秒。你能告诉我怎么做才能让这个快点?

我使用Spring 3.0 + Tomcat 6.0.29 + json.lib进行JSON解析。

已更新:

我用来将XML转换为JSON的代码。

JSONObject ResponseObj = XML.toJSONObject(elementToString.getelementToString((Element)Responses.item(0)));

3 个答案:

答案 0 :(得分:1)

首先,为什么json-to-json?有必要还是“很高兴”?

我认为问题是对象创建,首先通过将xml解析为DOM来创建大量对象,然后必须为xml-> json转换构建新的对象树,然后再创建另一个json-> json转换的对象树。对象创建是您可以在Java中执行的更昂贵的操作之一。

要阻止所有对象创建,请查看事件驱动的xml和json处理,如SAX表示XML,Json Simple和/或Jackson表示JSON。

但是当然,可能的解决方案是处理XML SAX样式并跳过所有转换。

答案 1 :(得分:0)

您可以在xstream中的json解析器中测试速度。通常xstream使用pull解析在XML的情况下真正快速的解析(拉解析与Java StAX之后的想法相同 - Java之后SAX中的新标准DOM }})。

当我使用xstream时,从JSON到java对象的解析并不明显(带有嵌入式浏览器的RCP应用程序)。

答案 2 :(得分:0)

自从我发布这个帖子已经有一年多了,但我觉得我需要用我的解决方案来解决这个问题,万一有人遇到完全相同的情况!

所以我所做的就是解析JSON,并将其原样发送到HTML页面,我已经完成了数据的解析,因为我喜欢使用lodash插件!它的速度要快得多,而且由于转换发生在前端,我们会在解析时显示数据,比如5之后的5,感觉很快。希望它有所帮助!