Impossible d'instancier une valeur de type java.util.LinkedHashMap de la Chaîne de valeur ('{'); pas une seule Chaîne de constructeur par défaut/méthode
J'ai les 2 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;
}
Quand j'essaie de désérialiser l'utilisation de ce 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);
}
- Je obtenir de l'exception suivante:
com.fasterxml.jackson.databind.JsonMappingException: ne Peut pas
instancier une valeur de type java.util.LinkedHashMap de la Chaîne de valeur
('{'); pas une seule Chaîne de constructeur par défaut/méthode à [Source:
{"changes":[{"epoch":1441556306522,"payload":"{"to":1}"},{"epoch":1441555481524,"payload":"{"to":-1}"}],"more":false};
ligne: 1, colonne: 35] (à travers la chaîne de référence:
la démo.ChangesJSON["modifications"]->java.util.ArrayList[0]->demo.ChangeJSON["charge utile"])
Il semble qu'il y a un problème avec la carte, mais j'ai pensé que Jackson devrait être en mesure de manipuler les cartes. Je reçois le même problème aussi, quand j'ai changer de carte à Carte. Mais j'ai besoin de soutien de toutes sortes de classes que les valeurs de la carte.
- Votre JSON n'est pas valide. Si vous supprimez l'échappement antislash, il contient
"payload": "{"to":1}"}
au lieu de"payload": {"to":1}}
Vous devez vous connecter pour publier un commentaire.
Vous avez des guillemets autour de la
payload
objet. Essayez de modifier cette partie:dans cette:
Je pense que c'est le JSON lui-même qui a un problème. Il unescapes à:
Il devrait probablement être quelque chose comme:
Donc: