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}}
InformationsquelleAutor checklist | 2015-09-07