插件 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 生成没有任何键值对的枚举

JsonSchema2Pojo,出生日期使用类型编号生成,我正在尝试以整数形式传递值

jsonschema2pojo 生成的 POJO 有 Android Studio 无法理解的注解

回发时如何阻止用户界面?