Я использую Jackson для сериализации JSON списка объектов.
Вот что я получаю:
{"ArrayList":[{"id":1,"name":"test name"}]}
Но я хочу это:
{"rootname":[{"id":1,"name":"test name"}]} // ie showing the string I want as the root name.
Ниже мой подход к этому:
Интерфейс:
public interface MyInterface {
public long getId();
public String getName();
}
Класс реализации:
@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
}
Сериализация 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);
}
}
Тест:
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);
Вот что я получаю:
{"ArrayList":[{"id":1,"name":"test name"}]}
Но я хочу это:
{"rootname":[{"id":1,"name":"test name"}]} // ie showing the string I want as the root name.
Я пробовал все предлагаемые решения, которые я мог найти, но не смог достичь своей цели. Я посмотрел:
- Джексон: сериализация пользовательских коллекций в JSON
- Как переименовать корневой ключ JSON с помощью Java Jackson?
- Джексон: сериализация пользовательских коллекций в JSON
Или я что-то упускаю? Для этого я использую jackson 1.9.12. Любая помощь в этом отношении приветствуется.