我在使用Java后端的Tomcat服务器上运行多个Web服务。当其中一个服务从其他服务之一查询某些内容时,它会将有效内容作为JSON字符串返回。现在我需要解析这个并获得我需要的信息。我使用json.org提供的JSON库
我想问的是,如果我有一个模板类(只有属性及其get / setter的类)作为两个服务中的库类,然后传递有效负载,那么会更快(对于处理)作为该类的一个对象,然后通过类型转换为该对象接受它。
WebResource localWebResource = localClient.resource(url);
ClientResponse localClientResponse = (ClientResponse) localWebResource
.accept(new String[] { "application/json" }).get(ClientResponse.class);
//Scenario 1 - accept it as String
String jsonString = (String) localClientResponse.getEntity(String.class);
MyObject myObj = parseJson(jsonString);
//场景2 - 接受它作为'MyObject'的对象
MyObject myObj = (MyObject) localClientResponse.getEntity(MyObject.class);
使用方案2,与方案1相比,它会更快吗?在方案2中转换为“MyObject”,编译器是否会像在方案1中那样花费与手动解析相同的时间。
请注意,有效负载通过网络传输。这种方法中的任何一种都会对网络传输时间产生影响吗?
答案 0 :(得分:0)
理论上,两种方法都需要相同的时间。他们都必须将JSON字符串转换为对象图。但是,我的经验是从框架中获取对象比尝试自己做的快得多。 (使用Jersey 1.17,没有Jackson,Jaxb / Json转换)