Comment puis-je inclure des premières JSON dans un objet à l'aide de Jackson?

Je suis en train d'essayer d'inclure des premières JSON à l'intérieur d'un objet Java lorsque l'objet est (de)sérialisé à l'aide de Jackson. Afin de tester cette fonctionnalité, j'ai écrit le test suivant:

public static class Pojo {
    public String foo;

    @JsonRawValue
    public String bar;
}

@Test
public void test() throws JsonGenerationException, JsonMappingException, IOException {

    String foo = "one";
    String bar = "{\"A\":false}";

    Pojo pojo = new Pojo();
    pojo.foo = foo;
    pojo.bar = bar;

    String json = "{\"foo\":\"" + foo + "\",\"bar\":" + bar + "}";

    ObjectMapper objectMapper = new ObjectMapper();
    String output = objectMapper.writeValueAsString(pojo);
    System.out.println(output);
    assertEquals(json, output);

    Pojo deserialized = objectMapper.readValue(output, Pojo.class);
    assertEquals(foo, deserialized.foo);
    assertEquals(bar, deserialized.bar);
}

Le code affiche la ligne suivante:

{"foo":"one","bar":{"A":false}}

Le JSON est exactement la façon dont je veux que les choses à regarder. Malheureusement, le code ne fonctionne pas avec une exception lors de la tentative de lecture du JSON dans l'objet. Ici est l'exception:

org.codehaus.jackson.carte.JsonMappingException: ne Peut pas désérialiser instance de java.lang.Chaîne de START_OBJECT jeton
à [Source: java.io.StringReader@d70d7a; ligne: 1, colonne: 13] (à travers la chaîne de référence: com.tnal.prism.le cobalt.se rassembler.les tests.Pojo["bar"])

Pourquoi Jackson fonction très bien dans un sens mais ne parviennent pas, quand on va dans une autre direction? Il me semble qu'il devrait être en mesure de prendre ses propres sorties comme entrée. Je sais ce que je suis en train de faire est peu orthodoxe (le conseil général est de créer un objet interne pour bar qui possède une propriété nommée A), mais je ne veux pas d'interagir avec du JSON à tous. Mon code est en agissant comme un pass-through " pour ce code, je veux prendre en JSON et de l'envoyer à nouveau, sans toucher à une chose, parce que quand le JSON des changements, je ne veux pas que mon code pour avoir besoin de modifications.

Merci pour les conseils.

EDIT: Fait Pojo une classe statique, ce qui provoquait une erreur différente.

InformationsquelleAutor bhilstrom | 2011-01-24