【问题标题】:Kotlin - Jackson ignore null valuesKotlin - Jackson 忽略空值
【发布时间】:2017-08-03 08:01:43
【问题描述】:

我在使用 Jackson 解析 JSON 时遇到问题,我想忽略 null 属性。这是我的代码。

@JsonIgnoreProperties(ignoreUnknown = true)
@JsonInclude(JsonInclude.Include.NON_NULL)
data class ParsedSurvey(
    val items: List<ParsedSurveyItem> = listOf()
)

@JsonIgnoreProperties(ignoreUnknown = true)
@JsonInclude(JsonInclude.Include.NON_NULL)
data class ParsedSurveyItem(
    val type: String = "",
    val text: String = "",
    val instructions: String = "",
    val prog: String = "",
    val `var`: String = "",
    val columns: List<ParsedSurveyAnswer> = listOf(),
    val rows: List<ParsedSurveyAnswer> = listOf(),
    val num: String = "",
    val multi: Boolean = false,
    val random: Boolean = false,
    val min: Int = -1,
    val max: Int = -1,
    val recordOrder: Boolean = false,
    val rowLength: Int = -1
)

@JsonIgnoreProperties(ignoreUnknown = true)
@JsonInclude(JsonInclude.Include.NON_NULL)
data class ParsedSurveyAnswer @JsonCreator(mode = JsonCreator.Mode.PROPERTIES) constructor(
    val text: String = "",
    val prog: String = "<p></p>",
    @JsonProperty("isOpen") val isOpen: Boolean = false
)

如果我尝试将 ParsedSurveyItem 中的 rows 属性设置为 null。我收到此错误:

value failed for JSON property rows due to missing (therefore NULL) value for creator parameter rows which is a non-nullable type.
Jackson doesn't ignore 

Jackson 为什么解析空值?感谢您的帮助。

【问题讨论】:

  • 当您使用JsonInclude.Include.NON_EMPTY 而不是NON_NULL 时会发生什么?
  • 它会抛出同样的错误。与 NON_NULL 一样
  • 我通常只是在反序列化 JSON 时将所有内容设置为空,以免出现类似错误,不知道是否有解决方法。我相信 Jackson 使用默认构造函数,这意味着它不会考虑您的默认值。

标签: java jackson kotlin


【解决方案1】:

您可以设置 rows 属性 null 只有当它可以为空时。它的意思是 把它改成

 val rows: List<ParsedSurveyAnswer>? 

你也可以删除listOf() & @JsonIgnoreProperties(ignoreUnknown = true)

【讨论】:

    猜你喜欢
    • 2013-04-11
    • 2011-05-09
    • 2018-05-20
    • 2019-10-22
    • 1970-01-01
    • 1970-01-01
    • 2014-03-27
    • 2019-02-27
    • 1970-01-01
    相关资源
    最近更新 更多