如何从javax.ws.rs.core.Response中读取嵌套的JSON实体

问题描述

我正在呼叫REST服务,该服务向我提供了javax.ws.rs.core.Response。此响应的媒体类型为'application / json',我尝试在此响应上使用readEntity,因此可以从中获取Java对象。 我得到的JSON是具有多个属性的对象,以及另一个具有多个属性的JSON对象。为此,我创建了两个带注释的java类,如下所示:

A级:

@XmlRootElement(name="")
@XmlType
@XmlAccessorType(XmlAccesstype.FIELD)
public class ClassA {

  @XmlElement(name = "AttributeA")
  private int attributeA;
  @XmlElement(name = "AttributeB")
  private String attributeB;
  @XmlElement(name = "AttributeC")
  private int attributeC;
  @XmlElement(name = "JSONResult")
  private ClassB jsonResult;      

  public ClassA() {
    super();
  }

 }

B级:

@XmlRootElement(name = "")
@XmlType
@XmlAccessorType(XmlAccesstype.FIELD)
public class ClassB {

  @XmlElement(name = "AttributeD")
  private String attributeD;
  @XmlElement(name = "AttributeE")
  private XMLGregorianCalendar attributeE;

  public ClassB() {
    super();
  }

}

然后我像这样继续读取实体:

ClassA classA = response.readEntity(ClassA.class);

代码编译并运行无任何错误。来自ClassA的所有属性均已正确读取并写入对象。但是,对于ClassB(ClassA的属性“ jsonResult”),似乎仅调用了构造函数。换句话说,ClassA具有一个ClassB类型的jsonResult,但是jsonResult的所有属性都是“空”。

我跑步时

String classA = response.readEntity(String.class);

为了分析响应,我得到以下字符串:

{
    "AttributeA": 12345,"AttributeB": "Thanks for helping","AttributeC": 678910,"JSONResult": "{\"AttributeD\":\"I really appreciate it\",\"AttributeE\":\"2017-01-12 - 2027-01-23\"}",}

如何正确读取第二个对象?我如何接收第二个对象是否存在问题,例如因为那里所有的转义字符串?

提前谢谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)