我正在使用jersey-json构建Neo4J插件,以将我的POJO解析为json。问题是我的REST服务将数字返回为字符串。
如果POJO看起来像这样:
@XmlRootElement
public class Item {
private Integer value = 5;
private int primitiveValue = 6;
public Item() {}
public Integer getValue() {
return value;
}
public int getPrimitiveValue() {
return primitiveValue;
}
}
我得到一个看起来像这样的JSON对象:
{
value: "5",
primitiveValue: "6"
}
但我希望它像这样:
{
value: 5,
primitiveValue: 6
}
我的资源如下所示:
@GET
@Path("/item")
@Produces(MediaType.APPLICATION_JSON)
public Response getItem() {
return Response.ok(new Item()).build();
}
我的pom看起来像这样:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>my.project.id</groupId>
<artifactId>neo4j-extension</artifactId>
<version>1.0</version>
<properties>
<neo4j.version>2.2.0</neo4j.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>javax.ws.rs</groupId>
<artifactId>javax.ws.rs-api</artifactId>
<version>2.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.neo4j</groupId>
<artifactId>neo4j</artifactId>
<version>${neo4j.version}</version>
</dependency>
<dependency>
<groupId>org.neo4j</groupId>
<artifactId>server-api</artifactId>
<version>${neo4j.version}</version>
</dependency>
<dependency>
<groupId>org.neo4j.app</groupId>
<artifactId>neo4j-server</artifactId>
<version>${neo4j.version}</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-json</artifactId>
<version>1.18.1</version>
</dependency>
</dependencies>
</project>
你知道我能解决这个问题吗?为什么将数字字段解析为字符串的默认行为?
解
根据Stefan Armbruster的建议,我将以下依赖项添加到了pom中,并将所有依赖的jar添加到了我的/plugins
文件夹中。
<dependency>
<groupId>com.fasterxml.jackson.jaxrs</groupId>
<artifactId>jackson-jaxrs-json-provider</artifactId>
<version>2.6.2</version>
</dependency>
并从我的POJO中删除了@XmlRootElement批注。
与之前的区别在于,我在响应中得到了所有空值。使用@XmlRootElement批注,从响应中删除了空值,但是我认为这不会成为问题。
尝试将您的JAX-RS方法更改为:
@GET
@Path("/item")
@Produces(MediaType.APPLICATION_JSON)
public Item getItem() {
return new Item();
}
如果出现错误,请修改http://mvnrepository.com/artifact/org.glassfish.jersey.media/jersey-media-json-jackson http://mvnrepository.com/artifact/com.fasterxml.jackson.jaxrs/将jackson-jaxrs-json-provider / 2.6.2添加到您的依赖项中(并确保将此jar也部署到该plugins
文件夹中)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句