Java Jackson不匹配InputException无字符串参数构造函数/工厂方法从字符串值反序列化
我有一个json示例:Java Jackson不匹配InputException无字符串参数构造函数/工厂方法从字符串值反序列化,java,json,jackson,illegalargumentexception,objectmapper,Java,Json,Jackson,Illegalargumentexception,Objectmapper,我有一个json示例: Object json = "{\"known1\":\"m1234\",\"known2\":1,\"known3\":2,\"unknown1\":true,\"unknown2\":15}" 我的Pojo类如下所示: @Data @AllArgsConstructor @NoArgsConstructor @Builder p
Object json = "{\"known1\":\"m1234\",\"known2\":1,\"known3\":2,\"unknown1\":true,\"unknown2\":15}"
我的Pojo类如下所示:
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class MyPojo implements Serializable {
private String known1;
private String known2;
private String known3;
private Map<String, Object> unknownFields;
@JsonAnySetter
public void setDynamicAttributes(String key, Object value) {
if (this.unknownFields == null) {
this.unknownFields = new HashMap<>();
}
this.unknownFields.put(key, value);
}}
我得到一个例外:
Exception in thread "main" java.lang.IllegalArgumentException: Cannot construct instance of `com.model.MyPojo` (although at least one Creator exists): no String-argument constructor/factory method to deserialize from String value ('{"known1":"m1234","known2":1,"known3":2,"unknown1":true,"unknown2":15}')
但是当我使用
Object jsonString = "{\"known1\":\"m1234\",\"known2\":1,\"known3\":2,\"unknown1\":true,\"unknown2\":15}";
MyPojo poco = new ObjectMapper().**readValue**(jsonString.toString(), MyPojo.class);
System.out.println(screenInfo);
我得到了预期的输出,并且未知字段填充在unknownFields映射中。谁能解释一下原因吗?我还想让它与convertValue一起工作。请帮忙
Object jsonString = "{\"known1\":\"m1234\",\"known2\":1,\"known3\":2,\"unknown1\":true,\"unknown2\":15}";
MyPojo poco = new ObjectMapper().**readValue**(jsonString.toString(), MyPojo.class);
System.out.println(screenInfo);