JSON是:
{"list": [1,2,3,4,5,6,7,8,9,10]}
以下是我实现JAXB bean的方法:
package com.anon.sortweb.jaxb;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlElement;
@XmlRootElement
public class JsonBean {
@XmlElement(name="list")
private int[] list;
public JsonBean() {}
public void setList(int[] list) {
this.list = list;
}
public int[] getList() {
return list;
}
}
我的Web应用程序运行正常(我能够成功访问其他资源)但是这一个资源(我将JSON传递给它)会返回415 Media Type Unsupported异常。
@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces("text/html")
public String sortAndReturnHtml(JsonBean listBean) { ... }
如何正确编写JAXB bean以封装整数列表?
提前致谢!
答案 0 :(得分:1)
注意:我是EclipseLink JAXB (MOXy)主管,是JAXB (JSR-222)专家组的成员。
您的JAXB bean是JSON数据的完美合理表示。 JAXB (JSR-222)规范不包含JSON绑定,因此答案最终归结为JAX-RS实现如何解释JAXB元数据以生成/使用JSON。
<强>演示强>
以下是它如何与MOXy一起使用。
package forum13648734;
import java.util.*;
import javax.xml.bind.*;
import javax.xml.transform.stream.StreamSource;
import org.eclipse.persistence.jaxb.JAXBContextProperties;
public class Demo {
public static void main(String[] args) throws Exception {
Map<String, Object> properties = new HashMap<String, Object>(2);
properties.put(JAXBContextProperties.MEDIA_TYPE, "application/json");
properties.put(JAXBContextProperties.JSON_INCLUDE_ROOT, false);
JAXBContext jc = JAXBContext.newInstance(new Class[] {JsonBean.class}, properties);
Unmarshaller unmarshaller = jc.createUnmarshaller();
StreamSource json = new StreamSource("src/forum13648734/input.json");
JsonBean jsonBean = unmarshaller.unmarshal(json, JsonBean.class).getValue();
Marshaller marshaller = jc.createMarshaller();
marshaller.marshal(jsonBean, System.out);
}
}
<强> input.json /输出强>
{"list":[1,2,3,4,5,6,7,8,9,10]}
了解更多信息