小编hen*_*e83的帖子

JAXB为Jersey中的JSON序列化注释POJO为每个字段类型返回String

我正在使用Jersey为服务器组件创建Web服务.不幸的是我的JSON响应格式有问题,因为数据总是格式化为字符串.

我有一个带有不同字段类型的简单JAXB注释POJO:

@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class JaxbPojo {

    @XmlElement(name = "id_64")
    private Long id;

    @XmlElement(name = "desc")
    private String description;

    private Boolean active;

    // getters and setters
    ..
}
Run Code Online (Sandbox Code Playgroud)

和一个简单的资源,返回传入的对象:

@Path("/jaxb_pojo")
public class JaxbPojoResource {

    @POST
    @Consumes({ MediaType.APPLICATION_JSON })
    @Produces({ MediaType.APPLICATION_JSON })
    public JaxbPojo processBidRequest(JaxbPojo pojo) {
         return pojo;
    }

}
Run Code Online (Sandbox Code Playgroud)

使用以下JSON数据向资源发送请求时,将在资源方法内正确填充该对象.但返回的JSON数据的字段类型始终格式化为字符串:

me@host:/tmp $ cat simple_jaxb_pojo 
{"id_64":99,"desc":"simple JAXB POJO","active":true}

me@host:/tmp $ curl -X POST -H "Content-Type: application/json" --data-binary @simple_jaxb_pojo http://localhost/srvr/rest/jaxb_pojo
{"id_64":"99","desc":"simple JAXB POJO","active":"true"}
Run Code Online (Sandbox Code Playgroud)

所有使用过的jar文件(jsr311-api-1.1.1.jar,jersey-core-1.6.jar,jersey-json-1.6.jar,jersey-server-1.6.jar)都直接包含在tomcat/lib路径中.JAX-RS库通过Maven pom.xml使用,范围为"提供":

<dependency>
    <groupId>javax.ws.rs</groupId>
    <artifactId>jsr311-api</artifactId>
    <version>1.1.1</version>
    <scope>provided</scope> …
Run Code Online (Sandbox Code Playgroud)

json jax-rs jaxb jersey jackson

6
推荐指数
1
解决办法
4487
查看次数

标签 统计

jackson ×1

jax-rs ×1

jaxb ×1

jersey ×1

json ×1