Java 在解析为json时,如何防止Jersey将数字字段解析为字符串?
我正在使用jersey json构建一个Neo4J插件来解析我的POJO与json之间的关系。问题是我的REST服务以字符串形式返回数字 如果POJO如下所示: 我得到一个JSON对象,如下所示: 但我希望是这样的: 我的资源如下所示: 我的pom如下所示: 并从我的POJO中删除了@XmlRootElement注释Java 在解析为json时,如何防止Jersey将数字字段解析为字符串?,java,json,neo4j,jersey,Java,Json,Neo4j,Jersey,我正在使用jersey json构建一个Neo4J插件来解析我的POJO与json之间的关系。问题是我的REST服务以字符串形式返回数字 如果POJO如下所示: 我得到一个JSON对象,如下所示: 但我希望是这样的: 我的资源如下所示: 我的pom如下所示: 并从我的POJO中删除了@XmlRootElement注释 与以前不同的是,我在响应中得到了所有空值。通过@XmlRootElement注释,可以从响应中删除空值,但我认为这不会有问题。尝试将JAX-RS方法更改为: @GET @
与以前不同的是,我在响应中得到了所有空值。通过@XmlRootElement注释,可以从响应中删除空值,但我认为这不会有问题。尝试将JAX-RS方法更改为:
@GET
@Path("/item")
@Produces(MediaType.APPLICATION_JSON)
public Item getItem() {
return new Item();
}
如果出现错误,请修改您的依赖项(并确保此jar也部署到
plugins
文件夹)。我没有收到任何错误,但它对原语或整数的对象类型都不起作用。更干净的代码,所以谢谢你!如果引用了错误的jar文件。我的答案已经更新了。有了上面提到的一个,我得到了{“value”:5,“primitiveValue”:6}
作为响应。我将jackson jaxrs json提供程序添加到我的pom和插件文件夹中,但仍然得到了相同的结果。在我的plugins文件夹中,我现在有以下jar:jackson-jaxrs-json-provider-2.6.2.jar、jackson-jaxrs-base-2.6.2.jar、jackson-core-2.6.2.jar、jersey-json-1.18.1.jar和jersey-multipart-1.18.1.jar与您的设置@Stefan Armbruster有什么不同?您使用的Neo4J的哪个版本?不确定是否有区别,但是在Item类上没有@XmlRootElement
注释。如果时间允许,我将尝试组装一个最小的设置并通过github共享。
{
value: "5",
primitiveValue: "6"
}
{
value: 5,
primitiveValue: 6
}
@GET
@Path("/item")
@Produces(MediaType.APPLICATION_JSON)
public Response getItem() {
return Response.ok(new Item()).build();
}
<?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>
<dependency>
<groupId>com.fasterxml.jackson.jaxrs</groupId>
<artifactId>jackson-jaxrs-json-provider</artifactId>
<version>2.6.2</version>
</dependency>
@GET
@Path("/item")
@Produces(MediaType.APPLICATION_JSON)
public Item getItem() {
return new Item();
}