一尘不染

杰克逊在反序列化时抛出JsonMappingException;需要单字符串构造函数?

json

另一个问题,但与此相关:使用Jackson来 反序列化JSON-为什么JsonMappingException“没有合适的构造函数”?

这次我遇到了另一个错误,即Jackson解串器抱怨类ProtocolContainer中没有“单字符串构造器/工厂方法”。

但是,如果我添加一个单字符串构造函数,如下所示:

public ProtocolContainer(String json) {}

异常确实消失了,但是ProtocolContainer我希望存在的所有异常都为“空”,即其所有属性都处于其初始状态,并且没有根据JSON字符串进行填充。

这是为什么?

我很确定您不需要单字符串构造函数,如果这样做,则不必填充该构造函数中的属性,对吗?

=)


阅读 216

收藏
2020-07-27

共1个答案

一尘不染

哦,所以我在发布此问题后再次找到了答案(即使在发布之前尝试了很多事情)。

我要做的就是使用@JsonCreator注释。我简单地注释了我的静态Create方法,如下所示:

@JsonCreator
public static ProtocolContainer Create(String jsonString)
{

    ProtocolContainer pc = null;
    try {
        pc = mapper.readValue(jsonString, ProtocolContainer.class);
    } catch (JsonParseException|JsonMappingException|IOException e) {
        // handle
    }

    return pc;
}

然后问题解决了。

2020-07-27