我有这个场景。我将向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)));
答案 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,感觉很快。希望它有所帮助!