问题描述
我有一个示例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 (将#修改为@)