问题描述
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 (将#修改为@)