在没有@JsonProperty的情况下更改json中属性的命名

时间:2019-10-31 13:11:21

标签: java json

我必须将我的json从camelCase转换为kebab-case。

示例:

My Json:
{
    "disclaimerConfirmed" : true
}

我需要:

{
    "disclaimer-confirmed" : true
}

我不能使用@JsonProperty,因为它将其重命名为永久属性。我正在寻找会消耗Json(可以作为String)并返回修改后的json(作为String)的东西。

2 个答案:

答案 0 :(得分:0)

您可以针对不同情况使用不同的序列化器,也可以使用@JsonProperty创建pojo并在需要的地方使用它们。

例如,

class A {
 private String disclaimerConfirmed;

}

class AkebabCase {
   @JsonProperty("disclaimer-confirmed")
   private String disclaimerConfirmed;
}

因此,如果要序列化为kebab-case,可以使用转换器将A转换为AkebabCase,然后序列化。

答案 1 :(得分:0)

Jackson支持命名策略,因此您可以读取输入的String进行映射(使用camelCase策略),然后将映射写回到String(使用kebab-case,它本身受支持);

您需要在没有注释的情况下在ObjectMapper中切换这些约定的特定方法是:

mapper.setPropertyNamingStrategy(PropertyNamingStrategy.*);