【发布时间】: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 使用默认构造函数,这意味着它不会考虑您的默认值。