Java 在解析为json时,如何防止Jersey将数字字段解析为字符串?

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 @

我正在使用jersey json构建一个Neo4J插件来解析我的POJO与json之间的关系。问题是我的REST服务以字符串形式返回数字

如果POJO如下所示:

我得到一个JSON对象,如下所示:

但我希望是这样的:

我的资源如下所示:

我的pom如下所示:

并从我的POJO中删除了@XmlRootElement注释


与以前不同的是,我在响应中得到了所有空值。通过@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();
}