如何使用 json 架构或 jsonschema2pojo 将某些属性标记为已忽略?
How can I mark as ignored some properties using json schema or jsonschema2pojo?
如何使用 json 架构或 jsonschema2pojo 插件将某些属性标记为已忽略?有时我会收到这些属性,有时我不会。
这是我遇到的异常:
com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "warnings" (class com.xyz.music.napster.v2.metadata.MetaVO), not marked as ignorable (2 known properties: "returnedCount", "totalCount"])
at [Source: okhttp3.ResponseBody$BomAwareReader@49f94818; line: 1, column: 15846] (through reference chain: com.xyz.music.napster.v2.metadata.PlaylistsResponseVO["meta"]->com.xyz.music.napster.v2.metadata.MetaVO["warnings"])
这是我的架构 MetaVO
class
{
"properties": {
"returnedCount": {
"type": "integer"
},
"totalCount": {
"type": "integer"
}
},
"type": "object"
}
目前我发现如果我在 MetaVO
class
上设置以下注释
@JsonIgnoreProperties(ignoreUnknown = true)
我的问题解决了。
但是 这些 class 是由插件自动生成的(根据我们的项目规范,它们必须保持如此)。
是否可以通过 json 架构或 jsonschema2pojo 插件执行类似的操作?
我通过从 jackson-converter 切换到 gson-converter 设法解决了这个问题。
在 jsonschema2pojo 情况下,可以从 json 或 json 用于生成 pojo 的模式中删除这些属性。
当它们在 json 中被检索时,它们将被反序列化并添加到 pojo 的 Map<String, Object> additionalProperties
字段中。
additionalProperties 字段是默认创建的。确保它未在架构 "additionalProperties": false
中禁用
如何使用 json 架构或 jsonschema2pojo 插件将某些属性标记为已忽略?有时我会收到这些属性,有时我不会。
这是我遇到的异常:
com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "warnings" (class com.xyz.music.napster.v2.metadata.MetaVO), not marked as ignorable (2 known properties: "returnedCount", "totalCount"]) at [Source: okhttp3.ResponseBody$BomAwareReader@49f94818; line: 1, column: 15846] (through reference chain: com.xyz.music.napster.v2.metadata.PlaylistsResponseVO["meta"]->com.xyz.music.napster.v2.metadata.MetaVO["warnings"])
这是我的架构 MetaVO
class
{
"properties": {
"returnedCount": {
"type": "integer"
},
"totalCount": {
"type": "integer"
}
},
"type": "object"
}
目前我发现如果我在 MetaVO
class
@JsonIgnoreProperties(ignoreUnknown = true)
我的问题解决了。
但是 这些 class 是由插件自动生成的(根据我们的项目规范,它们必须保持如此)。
是否可以通过 json 架构或 jsonschema2pojo 插件执行类似的操作?
我通过从 jackson-converter 切换到 gson-converter 设法解决了这个问题。
在 jsonschema2pojo 情况下,可以从 json 或 json 用于生成 pojo 的模式中删除这些属性。
当它们在 json 中被检索时,它们将被反序列化并添加到 pojo 的 Map<String, Object> additionalProperties
字段中。
additionalProperties 字段是默认创建的。确保它未在架构 "additionalProperties": false