在使用Jackson序列化POJO时将命名策略应用于类名

时间:2012-03-23 03:53:05

标签: java jackson

使用Jackson的WRAP_ROOT_VALUE序列化设置并序列化POJO时,类名将用作序列化JSON中的根值。

mapper.configure(SerializationConfig.Feature.WRAP_ROOT_VALUE, true);

问题 - 如何将命名策略应用于班级名称?我想将类名转换为其他名称。

1 个答案:

答案 0 :(得分:0)

我这样做的方法是使用@JsonRootName注释,如:

@JsonRootName( value = "smsMessageRequest" )           
public class TextMessage {

    private String message;
    private String address;
}

public static String toJson(Object object) throws IOException {

    ObjectMapper mapper = new ObjectMapper();

    mapper.setVisibility(JsonMethod.FIELD, Visibility.ANY);
    mapper.configure(SerializationConfig.Feature.WRAP_ROOT_VALUE, true);

    return mapper.writerWithDefaultPrettyPrinter().writeValueAsString(object);
}

产生了:

{
  "smsMessageRequest" : {
    "message" : "abc",
    "address" : "123"
  }
}