我正在使用Jackson进行JSON序列化对象列表.
这是我得到的:
{"ArrayList":[{"id":1,"name":"test name"}]}
Run Code Online (Sandbox Code Playgroud)
但我想要这个:
{"rootname":[{"id":1,"name":"test name"}]} // ie showing the string I want as the root name.
Run Code Online (Sandbox Code Playgroud)
以下是我对此的处理方法:
接口:
public interface MyInterface {
public long getId();
public String getName();
}
Run Code Online (Sandbox Code Playgroud)
实施班:
@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
}
Run Code Online (Sandbox Code Playgroud)
JSon序列化:
public class MySerializer {
public static String serializeList(final List<MyInterface> lists) {
//check for null value.Throw …Run Code Online (Sandbox Code Playgroud) 我遇到了一个问题,我试图将List作为根节点,但我似乎无法得到它.让我解释.假设我们有一个类"TestClass"
class TestClass{
String propertyA;
}
Run Code Online (Sandbox Code Playgroud)
现在,在一些实用方法中,这就是我所做的
String utilityMethod(){
List<TestClass> list = someService.getList();
new ObjectMapper().writeValueAsString(list);
}
Run Code Online (Sandbox Code Playgroud)
我试图在JSON中获得的输出是
{"ListOfTestClasses":[{"propertyA":"propertyAValue"},{"propertyA":"someOtherPropertyValue"}]}
Run Code Online (Sandbox Code Playgroud)
我试过用
objMapper.getSerializationConfig().set(Feature.WRAP_ROOT_VALUE, true);
Run Code Online (Sandbox Code Playgroud)
但是,我似乎仍然没有做对.
现在,我只是创建一个Map <String,TestClass>,然后我写这个来实现我想要做的事情,但这很有效但很明显这是一个黑客.有人可以帮我一个更优雅的解决方案吗?谢谢