另一个问题,但与此相关:使用Jackson来 反序列化JSON-为什么JsonMappingException“没有合适的构造函数”?
这次我遇到了另一个错误,即Jackson解串器抱怨类ProtocolContainer中没有“单字符串构造器/工厂方法”。
但是,如果我添加一个单字符串构造函数,如下所示:
public ProtocolContainer(String json) {}
异常确实消失了,但是ProtocolContainer我希望存在的所有异常都为“空”,即其所有属性都处于其初始状态,并且没有根据JSON字符串进行填充。
ProtocolContainer
这是为什么?
我很确定您不需要单字符串构造函数,如果这样做,则不必填充该构造函数中的属性,对吗?
=)
哦,所以我在发布此问题后再次找到了答案(即使在发布之前尝试了很多事情)。
我要做的就是使用@JsonCreator注释。我简单地注释了我的静态Create方法,如下所示:
@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; }
然后问题解决了。