插件 jsonschema2pojo:属性按要求显示,但它们应该是可选的
Posted
技术标签:
【中文标题】插件 jsonschema2pojo:属性按要求显示,但它们应该是可选的【英文标题】:Plugin jsonschema2pojo: Properties are shown as required but they should be optional 【发布时间】:2021-12-02 17:13:52 【问题描述】:我有一个personschema,例如这两个字段:
"name":
"title": "Last name",
"type": "string",
"minLength": 1,
"isRequired" : true
"birthday":
"title": "Date of birth",
"$ref": "resource:schema/general/dateSchema.json",
"isRequired" : true
,
"birthCountry":
"$ref": "resource:schema/general/countrySchema.json",
"title": "Country of birth",
"isRequired" : true
然后我有另一个扩展人模式的模式。在这个模式中,我希望这两个属性(birthCountry 和birthday)是可选的,只有名字是强制性的。我试过这样:
"$schema": "http://json-schema.org/draft/2019-09/schema",
"title": "Other Schema",
"type": "object",
"javaType": "..json_schema_model.dto.OtherSchema",
"description": "Other Schema Description",
"extendsJavaClass": "..json_schema_model.dto.PersonSchema",
"allOf": [
"required": [
"name"
],
"$ref": "resource:schema/general/personSchema.json"
但不幸的是,在 API-Docs 中,它们仍然被标记为强制性的。
【问题讨论】:
【参考方案1】:问题是属性只能在子类中添加而不能修改,所以我重新排列类结构来修改决定是否强制值只能在子类中决定。另请注意,与 $refs 一起的兄弟值将被忽略。要将属性添加到 $ref,您需要将其包装到 allOf 中。
【讨论】:
以上是关于插件 jsonschema2pojo:属性按要求显示,但它们应该是可选的的主要内容,如果未能解决你的问题,请参考以下文章
jsonschema2pojo maven插件不会生成Java类
错误:警告:忽略匿名内部类的 InnerClasses 属性错误:(org.jsonschema2pojo.gradle。)
JsonSchema2Pojo,出生日期使用类型编号生成,我正在尝试以整数形式传递值