1

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

例如:转换 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)));
4

3 回答 3

1

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

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

为了防止创建所有对象,请查看事件驱动的 xml 和 json 处理,例如用于 XML 的SAX和用于 JSON 的Json Simple和/或Jackson

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

于 2012-09-04T15:51:40.353 回答
0

您可以在xstream的 json 解析器中测试速度。通常xstream使用拉解析在 XML 的情况下非常快(拉解析与后面的想法相同- after和Java StAX中的新标准)。JavaSAXDOM

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

于 2012-09-04T15:31:25.610 回答
0

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

所以我所做的就是解析 JSON,并将其原样发送到 HTML 页面,在该页面中,我使用 lodash 插件完成了我喜欢的数据解析!它要快得多,而且由于转换发生在前端,我们在解析数据时显示数据,就像 5 后 5 一样,感觉很快。希望能帮助到你!

于 2016-01-25T08:20:07.803 回答