Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法从字符串值(';{';)实例化java.util.LinkedHashMap类型的值;没有单个字符串构造函数/工厂方法_Java_Json_Jackson_Fasterxml - Fatal编程技术网

无法从字符串值(';{';)实例化java.util.LinkedHashMap类型的值;没有单个字符串构造函数/工厂方法

无法从字符串值(';{';)实例化java.util.LinkedHashMap类型的值;没有单个字符串构造函数/工厂方法,java,json,jackson,fasterxml,Java,Json,Jackson,Fasterxml,我有以下两门课: @JsonIgnoreProperties(ignoreUnknown = true) public class ChangesJSON { @JsonProperty("changes") List<ChangeJSON> changes; @JsonProperty("more") Boolean more; } public class ChangeJSON { @JsonProperty("epoch")

我有以下两门课:

@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;
}
我得到以下例外情况:

com.fasterxml.jackson.databind.JsonMappingException:无法 从字符串值实例化java.util.LinkedHashMap类型的值 ({');在[源代码: {“变更”:[{“历元”:1441556306522,“有效载荷”:“{”至“:1}”},{“历元”:1441555481524,“有效载荷”:“{”至“:-1}”}],“更多”:假}; 行:1,列:35](通过参考链: demo.ChangesJSON[“changes”]->java.util.ArrayList[0]->demo.ChangeJSON[“payload”])


地图似乎有问题,但我认为Jackson应该能够处理地图。当我将地图更改为地图时,我也会遇到同样的问题。但我确实需要支持各种类型的类作为地图的值。

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

\"payload\":\"{\"to\":1}\"
为此:

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

我认为JSON本身存在问题。它可以解释为:

{"changes":[{"epoch":1441556306522,"payload":"{"to":1}"},{"epoch":1441555481524,"payload":"{"to":-1}"}],"more":false}
可能应该是这样的:

{"changes":[{"epoch":1441556306522,"payload":{"to":1}},{"epoch":1441555481524,"payload":{"to":-1}}],"more":false}
因此:


您的JSON无效。如果删除转义反斜杠,它将包含
“有效负载”:“{”to“:1}”}
,而不是
“有效负载”:{”to“:1}
{"changes":[{"epoch":1441556306522,"payload":{"to":1}},{"epoch":1441555481524,"payload":{"to":-1}}],"more":false}
String test = "{\"changes\":[{\"epoch\":1441556306522,\"payload\":{\"to\":1}},{\"epoch\":1441555481524,\"payload\":{\"to\":-1}}],\"more\":false}";