Cannot instantiate a value of type java.util.linkedhashmap from a string value (‘{‘); there is no single string constructor / factory method
•
Java
I have the following two classes:
@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;
}
When I try to deserialize using this test:
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);
}
I get the following exception:
There seems to be a problem with the map, but I think Jackson should be able to handle the map When I changed the map to map, I encountered the same problem But I do need to support various classes as map values
Solution
You have quotation marks around the payload object Try changing this section:
\"payload\":\"{\"to\":1}\"
Enter this:
\"payload\":{\"to\":1}
The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
二维码
