2012-06-25 32 views
0

我正在开发一个JERSEY RESTful Web服务,它具有接受对象参数的函数。这就是所谓的“同步”,看起来像这样:将XML发送至JERSEY Web服务时出错

@XmlRootElement 
public class Synchronize { 

private List<PHQ9> phq9OutOfSync; 
private List<ExtraQuestions> extraQuestionsOutOfSync; 
private List<Suicide> suicideOutOfSync; 
private List<Brugha> brughaOutOfSync; 
private int hola; 

public Synchronize() { 

    phq9OutOfSync = new ArrayList<PHQ9>(); 
    extraQuestionsOutOfSync = new ArrayList<ExtraQuestions>(); 
    suicideOutOfSync = new ArrayList<Suicide>(); 
    brughaOutOfSync = new ArrayList<Brugha>(); 
} 
} 

的问题是我不能够发送XML这个类的序列化的Web服务。我发送一个带有所有属性的xml,但它并没有反序列化它......我不知道是否是因为列表出现了一些问题。我甚至尝试发送只有int属性,如:

<synchronize><hola>1</hola></synchronize> 

并且不起作用...发生了什么事情?

任何提示?

编辑:我看到,我不知道如何可以引用一个类中的属性。我试着制作一个web服务,它接受一个带有phq9对象的列表,并且它工作的很好,但是如果我把这个列表放在其他类中,那么它不知道如何反序列化。为什么会这样?

EDIT2:

@XmlRootElement 
public class PHQ9 { 

@XmlElement 
private int id; 
@XmlElement 
private int patientId; 
@XmlElement 
private int answer1; 
@XmlElement 
private int answer2; 
@XmlElement 
private int answer3; 
@XmlElement 
private int answer4; 
@XmlElement 
private int answer5; 
@XmlElement 
private int answer6; 
@XmlElement 
private int answer7; 
@XmlElement 
private int answer8; 
@XmlElement 
private int answer9; 
@XmlElement 
private int answer10; 
@XmlElement 
private int total; 
@XmlElement 
private int week; 
@XmlElement 
private String phq9Date; 
@XmlElement 
private String timeExported; 
@XmlElement 
private String dateExported; 
@XmlElement 
private int exported; 

public PHQ9() { 

    phq9Date = timeExported = dateExported = "";   
} 
} 

回答

0

[编辑]

在问候名单,采取如果需要如何包装清单,看看JAXB: How to marshal objects in lists?

您可以使用XmlAccessorType(http://docs.oracle.com/javaee/5/api/javax/xml/bind/annotation/XmlAccessorType.html)和XmlElement(http://docs.oracle.com/javaee/5/api/javax/xml/bind/annotation/XmlElement.html)限制要序列化哪些成员。

您可能试图序列化/反序列化不支持的类,导致它失败。你是否得到任何例外,或只是在默默地失败?您是否尝试过查看正在发送/接收的原始数据?

+0

你能解释一下吗? – Frion3L

+0

我的歉意,我想我误解了你的问题。让我编辑一下我的回复。 –

+0

我将XMLElement添加到类Synchronize的属性中,现在看起来好多了。现在属性“霍拉”是很好的反序列化,但其他的不是。它反序列化了数组的大小,但是对象的属性不在......它们具有初始值。任何提示? (我将XMlElement添加到数组中的对象的属性中,但它不起作用)。谢谢 – Frion3L