使用@JsonCreator和@JsonProperty时出现NullPointerException

时间:2015-10-01 09:51:38

标签: java json angularjs jersey jackson

我有一个RESTful API的Java项目,我使用Jackson / jersey来处理从支持AngularJS的Web应用程序发送的传入JSON POST数据。

我们在版本1.8中使用jersey-json(通过Maven),因为这是我们公司推荐的版本。

以下课程

一切运作良好
//Appending 1,2,3 to the given array
function doSomething(someArray) {
    return someArray.concat(['1', '2', '3']);
}

即使我们决定使用具有空构造函数和公共setter的私有成员,它仍然可以正常工作。

但是我们想让这个类不可变。经过一些研究后,我发现我可以通过将@JsonCreator与@JsonProperty一起使用来实现这一点:

public class POST_WorkitemInfo {
    public String workitem;
    public String workflow;
    public String taskname;
    public String force;
}

但是现在对API的调用因NullPointerException而失败:

private final String workitem;
private final String workflow;
private final String taskname;
private final String force;

@JsonCreator
public POST_WorkitemInfo(@JsonProperty("workitem") String workitem, @JsonProperty("workflow") String workflow,
                         @JsonProperty("taskname") String taskname, @JsonProperty("force") String force) {
    this.workitem = workitem;
    this.workflow = workflow;
    this.taskname = taskname;
    this.force = force;
}

我在这里缺少什么?我需要添加更多注释吗?

1 个答案:

答案 0 :(得分:0)

我们迁移到泽西版1.19

将依赖项添加到jersey-servlet后,一切正常,包括@JsonCreator@JsonProperty

的不可变类
<dependency>
    <groupId>com.sun.jersey</groupId>
    <artifactId>jersey-server</artifactId>
    <version>1.19</version>
</dependency>
<dependency>
    <groupId>com.sun.jersey</groupId>
    <artifactId>jersey-json</artifactId>
    <version>1.19</version>
</dependency>
<dependency>
    <groupId>com.sun.jersey</groupId>
    <artifactId>jersey-servlet</artifactId>
    <version>1.19</version>
</dependency>