Comment renommer une clé racine dans la sérialisation JSON avec Jackson

Je suis à l'aide de Jackson pour la sérialisation JSON d'une liste d'objets.

Voici ce que j'obtiens:

{"ArrayList":[{"id":1,"name":"test name"}]}

Mais ce que je veux c' :

{"rootname":[{"id":1,"name":"test name"}]} //ie showing the string I want as the root name.

Voici ma démarche:

Interface:

public interface MyInterface {
    public long getId();
    public String getName();
}

Mise en œuvre de la classe:

@JsonRootName(value = "rootname")
public class MyImpl implements MyInterface {
    private final long id;
    private String name;

    public MyImpl(final long id,final name) {
        this.id = id;
        this.name = name;
    }

   //getters     
}

La sérialisation JSon:

public class MySerializer {
    public static String serializeList(final List<MyInterface> lists) {
        //check for null value.Throw Exception
        final ObjectMapper mapper = new ObjectMapper();
        mapper.configure(SerializationConfig.Feature.WRAP_ROOT_VALUE, true);
        return mapper.writeValueAsString(lists);
    }
}

Test:

final List<MyInterface> list = new ArrayList<MyImpl>();
MyImpl item = new MyImpl(1L,"test name");
list.add(item);
final String json = MySerializer.serializeList(list);
System.out.println(json);

Voici ce que j'obtiens:

{"ArrayList":[{"id":1,"name":"test name"}]}

Mais ce que je veux c' :

{"rootname":[{"id":1,"name":"test name"}]} //ie showing the string I want as the root     name.

J'ai essayé toutes les solutions proposées que j'ai pu trouver, mais a échoué à atteindre mon objectif. J'ai regardé:

Ou ai-je raté quelque chose? Je suis à l'aide de jackson 1.9.12 pour cela. Toute aide à ce sujet est la bienvenue.

  • essayez de sérialiser une instance de MyImpl pas une Liste de MyImpl. Le processus est en train de faire son travail depuis qu'il est à la recouvrant d'une Liste et non un MyInterface objet.
InformationsquelleAutor user2266861 | 2013-04-10