【问题标题】:Why @JsonProperty not work for camel case properties in Kotlin为什么@JsonProperty 不适用于 Kotlin 中的驼峰式属性
【发布时间】:2021-08-02 14:08:49
【问题描述】:

有一个非常简单的类:

class Price(
    @JsonProperty("YPRICE")
    val yprice: String? = null,

    @JsonProperty("ZPRICE")
    val zPrice: String? = null
)

下面的代码序列化为字符串:

val mapper = ObjectMapper().registerKotlinModule()
mapper.writeValue(System.out, Price())

控制台中的结果是:

{"YPRICE":null,"zprice":null}

如果将zPrice的属性改为zprice,则结果变为:

{"YPRICE":null,"ZPRICE":null}

如果将yprice的属性改为yPrice,则结果变为:

{"yprice":null,"zprice":null}

@JsonProperty 似乎不适用于驼峰式属性。

【问题讨论】:

  • 不知道它在 javascript 中是怎样的,但在 java 中你可能只需要配置 mapper.configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES, true);

标签: kotlin jackson


【解决方案1】:

您需要指示ObjectMapper 基于字段而不是基于getter 方法生成JSON 属性。可以使用com.fasterxml.jackson.annotation.JsonAutoDetect注解:

@JsonAutoDetect(getterVisibility = JsonAutoDetect.Visibility.NONE, fieldVisibility = JsonAutoDetect.Visibility.ANY)
class Price(

从现在开始,在所有情况下,您都应该看到相同的结果。

看看:

【讨论】:

  • 非常感谢。有用。但是我可以知道这个案子的原因吗?为什么它在骆驼情况下显示不同的结果而不是。
猜你喜欢
  • 1970-01-01
  • 2020-03-31
  • 2016-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多