解析Jax-ws Restful Response的有效方法

时间:2017-03-28 15:57:58

标签: json web-services jackson

我需要解析jax-ws rest响应,我尝试了以下两种解析响应的方法。两种方法都很好。但是我需要知道最有效的实现方法。请提供你的看法。< / p>

第一种方法:

  • 使用getEntity Object并将响应作为输入流获取。
  • 使用Jackson ObjectMapper readValue() - 将输入流传输到java 宾语。
  • 使用嵌套java类的getter和setter获取响应对象成员值。

第二种方法:

  • 使用getEntity Object并将响应作为输入流和和 将输入流转换为字符串。
  • 使用Google Json API,将字符串转换为json对象。
  • 使用Json解析器并获取嵌套对象成员值。

2 个答案:

答案 0 :(得分:0)

我想说第一种方法更好有两个原因:

  1. 您没有经历将响应有效负载读入String
  2. 的中间过程
  3. 在Jackson反序列化期间调用的setter方法可以对输入执行验证并抛出适当的异常,因此在反序列化期间进行验证。

答案 1 :(得分:0)

可能不是这个问题的一般答案,而是你在“第一种方法”下所描述的另一种变体。我将从一个通用数据结构开始,如果需要,只会引入一个额外的bean。我不会使用String传递结构化数据。

  

使用jackson将JSON响应转换为   Map<String,Object>JsonNode

优势:

  • 您无需实施专门的bean class。即使是非常简单的bean也会随着时间的推移变得不方便(如果格式更改或新的嵌套结构被添加到json响应中,等等)。它还为您的代码引入了某种隐喻,这种隐喻有时会有所帮助,但也会产生误导。
  • Map<String,Object>位于JDK中,提供了一个访问数据的良好界面。即使JSON格式发生更改,您也不必更改任何接口。 您始终可以Map<String,Object>
  • 的形式传递数据

缺点

  • 数据封装。映射是输入数据的非常接近的表示,因此提供与bean不同的抽象级别。