Jak zmienić nazwę klucza głównego w serializacji JSON z Jacksonem

Używam serializacji obiektów Jackson do serializacji JSON.

Oto co otrzymuję:

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

Ale chcę tego:

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

Poniżej przedstawiam moje podejście do tego:

Berło:

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

Klasa implementacji:

@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     
}

Serializacja 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);

Oto co otrzymuję:

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

Ale chcę tego:

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

Próbowałem wszystkich proponowanych rozwiązań, które udało mi się znaleźć, ale nie udało mi się osiągnąć mojego celu. Spojrzałem na:

Jackson: serializacja kolekcji niestandardowych do JSONJak zmienić nazwę klucza głównego JSON za pomocą Java Jackson?Jackson: serializacja kolekcji niestandardowych do JSON

Czy coś mi brakuje? Używam do tego jackson 1.9.12. Każda pomoc w tym zakresie jest mile widziana.

questionAnswers(4)

yourAnswerToTheQuestion