另一个问题,但这与此有关:
Deserializing JSON with Jackson - Why JsonMappingException "No suitable constructor"?

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

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

public ProtocolContainer(String json) {}

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

这是为什么?

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

=)

最佳答案

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

我要做的就是使用@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;
}

然后问题解决了。

10-05 18:23