当前位置: 首页 > 知识库问答 >
问题:

当用@JSONProperty注释时,布尔getter被序列化两次

仉明知
2023-03-14

假设有一个具有布尔属性的类,其名称以开头为:

    class Preferrable {
        var isPreferred: Boolean = true
    }

它被序列化为{“preferred”:true},删除部分。

正如本问题中提到的,为了防止这种情况,我们需要使用@jsonproperty(“ispreferred”)注释显式地指定属性名。

解决办法是对属性getter应用注释。它对数据类不起作用,对我来说,这段代码看起来有点太多了,不能保持属性名的原样:

class Preferrable {
    var isPreferred: Boolean = true
        @JsonProperty(value = "isPreferred")
        get() = field
}

这样的行为背后的原因是什么?只是个虫子吗?是否有更简单的方法来防止Is删除Kotlin的前缀?

共有1个答案

胡曾笑
2023-03-14
@get:JsonProperty("isPreferred")
var isPreferred: Boolean = true

请注意,这确实适用于数据类,例如。

data class Preferrable(
    @get:JsonProperty("isPreferred")
    var isPreferred: Boolean = true
)
 类似资料:
  • 问题内容: 我继承了在getter / setter上具有@JsonProperty批注的某些位代码。目的是当使用Jackson库序列化对象时,字段具有该特定名称。 当前代码: 现在,对于另一个工具,我还需要使用JsonProperty对该字段进行注释。因此,这将是我更改的代码: 是否有人在字段和获取器/设置器上都使用了相同的注释?我在网上四处张望,却什么也没看见。 我已经编译并运行了代码,但是我

  • 问题内容: 我继承了在getter / setter上具有@JsonProperty批注的某些位代码。目的是当使用Jackson库序列化对象时,字段具有该特定名称。 当前代码: 现在,对于另一个工具,我还需要使用JsonProperty对该字段进行注释。因此,这将是我更改的代码: 是否有人在字段和获取器/设置器上都使用了相同的注释?我在网上四处张望,却什么也没看见。 我已经编译并运行了代码,但是我

  • 我继承了在getter/setter上有@JSONProperty注释的特定位代码。这样做的目的是,当使用Jackson库序列化对象时,字段具有特定的名称。 当前代码: 我已经编译并运行了代码,但我不确定这是否会导致任何问题。对此有什么想法吗?

  • 问题内容: 快速提问: 在JSONNet中-如何获取布尔true / false以序列化为布尔1/0 我可以看到我们如何处理空值,而所有这些似乎都找不到如何执行此操作。 这可能吗? 问题答案: 您可以像这样实现自定义转换器:

  • 问题内容: 我正在使用Java lombok批注@Getter为我的POJO生成吸气剂。我有一个名为“ isAbc”的“布尔”字段。在这种情况下,@ Getter批注生成名为“ isAbc()”的方法。它不应该生成名为“ isIsAbc()”的方法吗? 问题答案: 阅读龙目岛页面上的“小字”部分https://projectlombok.org/features/GetterSetter.html

  • 没有重写jackson从getter获得的默认名称。如果我用和jackson序列化下面的类,我会得到 如您所见,JsonProperty注释不起作用 将放在字符串本身也不起作用。我可以改变名字的唯一方法是重命名getter,唯一的问题是它的第一个字母总是小写的