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 JSONCzy coś mi brakuje? Używam do tego jackson 1.9.12. Każda pomoc w tym zakresie jest mile widziana.