首页 > 解决方案 > 如果我无法使用注释 JsonTypeInfo 标记该类,如何为类自定义 json 包装键?

问题描述

我有这样的代码:

import org.codehaus.jackson.map.*;

public class MyPojo {
    int id;
    public int getId()
    { return this.id; }

    public void setId(int id)
    { this.id = id; }

    public static void main(String[] args) throws Exception {
        MyPojo mp = new MyPojo();
        mp.setId(4);
        ObjectMapper mapper = new ObjectMapper();
        mapper.configure(SerializationConfig.Feature.WRAP_ROOT_VALUE, true);        
        System.out.println(mapper.writeValueAsString(mp));
    }
}

它按预期工作:

{"MyPojo":{"id":4}}

但我想自定义该名称。我无法标记MyPojo@JsonTypeInfo因为我从图书馆学习了这门课。

有没有办法在杰克逊做到这一点?

标签: javajsonjacksonwrapper

解决方案


您也ObjectWriter可以专门用于此类:

MyPojo mp = new MyPojo();
mp.setId(4);
ObjectMapper mapper = new ObjectMapper();
ObjectWriter writer = mapper.writer().withRootName("TestPojo");
System.out.println(writer.writeValueAsString(mp));

推荐阅读