我正在使用java和glassfish开发一个restful webservice。 Web服务使用JSON。我创建了一个带有几个简单字段的JAXB bean以及其他jaxb bean的嵌套数组。我在下面列出了相关代码。
当我使用仅简单字段填充我的bean时,Web服务接受传入的bean,处理它并正确返回。
当我添加嵌套的子bean数组时,我从服务器返回状态400 ...我担心我注释getter方法的方式可能会影响整个bean,因为它传递给了服务器
我还为我的测试人员添加了代码,用于将bean推送到服务器
这是相关网络服务的方法签名:
@POST
@Path( "test1" )
@Consumes( MediaType.APPLICATION_JSON )
public Response createRecord( JAXB_ExampleBean track )
这是顶级bean:
@XmlRootElement( name = "example" )
@XmlType( propOrder = { "id", "idCreator", "title", "revList" } )
public class JAXB_ExampleBean
{
private long id = 0;
private long idCreator;
private String title;
private ArrayList<JAXB_ExampleRevBean> revList;
@XmlElementWrapper( name = "exampleList" )
@XmlElement( name = "exampleRevision" )
public ArrayList<JAXB_ExampleRevBean> getRevList()
{
return revList;
}
// other getters/setters omitted for brevity no additional annotations on them
}
这是嵌套bean:
@XmlRootElement( name = "exampleRevision" )
@XmlType( propOrder = { "id", "idExample", "idAuthor", "revOrder" } )
public class JAXB_ExampleRevBean
{
private long id = 0;
private long idExample;
private long idAuthor;
private int revOrder;
// getters/setters omitted for brevity no additional annotations on them
}
这是测试人员代码:
WebResource webResource = client.resource( "http://example.com/resources/meta/test1" );
JAXB_ExampleBean beanToUpload = buildExampleBeanToSend();
ClientResponse response = webResource.type( "application/json" ).post( ClientResponse.class, beanToUpload );
if( response.getStatus() != 201 )
throw new RuntimeException( "Failed : HTTP error code : " + response.getStatus() );
答案 0 :(得分:0)
您应该尝试使用array []或List而不是Arraylist。大多数序列化/反序列化框架不处理具体的集合类。