另一个问题,但这与此有关:
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;
}
然后问题解决了。