相关疑难解决方法(0)

如何使用Jackson在JSON序列化中重命名根密钥

我正在使用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)

java json root jackson

26
推荐指数
3
解决办法
5万
查看次数

如何将List包装为Jackson生成的JSON中的顶级元素

我遇到了一个问题,我试图将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>,然后我写这个来实现我想要做的事情,但这很有效但很明显这是一个黑客.有人可以帮我一个更优雅的解决方案吗?谢谢

java json jackson

6
推荐指数
1
解决办法
1万
查看次数

标签 统计

jackson ×2

java ×2

json ×2

root ×1