如何解决Jackson MismatchedInputException否要从字符串值反序列化的字符串参数构造函数/工厂方法
我有一个示例json:
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);
}}
以下是代码段:
Object jsonString = "{\"known1\":\"m1234\",\"unknown2\":15}";
MyPojo poco = new ObjectMapper().**convertValue**(jsonString,MyPojo.class);
System.out.println(screenInfo);
我正在例外:
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\",\"unknown2\":15}";
MyPojo poco = new ObjectMapper().**readValue**(jsonString.toString(),MyPojo.class);
System.out.println(screenInfo);
我得到了预期的输出,未知字段也填充在unknownFields映射中。谁能解释我为什么?我也想使其与convertValue一起使用。请帮忙。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。