加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

无法从String值(‘{‘)实例化java.util.LinkedHashMap类型的值;

发布时间:2020-12-15 04:29:31 所属栏目:Java 来源:网络整理
导读:我有以下两个班级: @JsonIgnoreProperties(ignoreUnknown = true)public class ChangesJSON { @JsonProperty("changes") ListChangeJSON changes; @JsonProperty("more") Boolean more;}public class ChangeJSON { @JsonProperty("epoch") Long epoch; @Jso
我有以下两个班级:

@JsonIgnoreProperties(ignoreUnknown = true)
public class ChangesJSON {

    @JsonProperty("changes")
    List<ChangeJSON> changes;

    @JsonProperty("more")
    Boolean more;
}

public class ChangeJSON {

    @JsonProperty("epoch")
    Long epoch;

    @JsonProperty("payload")
    Map<String,Object> payload;
}

当我尝试使用此测试反序列化时:

String test = "{"changes":[{"epoch":1441556306522,"payload":"{"to":1}"},{"epoch":1441555481524,"payload":"{"to":-1}"}],"more":false}";

@Test
public void myTest() {
    ObjectMapper mapper = new ObjectMapper();
    ChangesJSON result = null;
    try {
        result = mapper.readValue(test,ChangesJSON.class);
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    assertNotNull(result);
}

我得到以下异常:

com.fasterxml.jackson.databind.JsonMappingException: Can not
instantiate value of type java.util.LinkedHashMap from String value
(‘{‘); no single-String constructor/factory method at [Source:
{“changes”:[{“epoch”:1441556306522,”payload”:”{“to”:1}”},{“epoch”:1441555481524,”payload”:”{“to”:-1}”}],”more”:false};
line: 1,column: 35] (through reference chain:
demo.ChangesJSON[“changes”]->java.util.ArrayList[0]->demo.ChangeJSON[“payload”])

似乎地图存在问题,但我认为杰克逊应该能够处理地图.当我将地图更改为Map时,我也遇到了同样的问题.但我确实需要支持各种类作为地图的值.

解决方法

您在有效负载对象周围有引号.尝试更改此部分:

"payload":"{"to":1}"

进入这个:

"payload":{"to":1}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读