有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

javajson模式与继承

我在json模式上搜索了带有继承的java绑定,所有搜索都让我找到了“allOf”的用法

使用allOf可能会解决我的问题,但我想知道在json模式中是否有一个构造,我可以使用它来生成具有真正java继承“B扩展a”的java代码,而不是将所有属性从a内联到B

我想知道这是否得到支持/可行,或者我只是在做梦。如果得不到支持,我很想知道原因


共 (2) 个答案

  1. # 1 楼答案

    您有3个选项,我使用的是jsonschema2pojo:1.0.0-alpha2

    "extends": {
        "$ref": "MyObject.json"
    }
    

    或者

    "extends": {
        "type": "object",
        "javaType": "com.mycompany.model.MyObject"
    }
    

    或者

     "extendsJavaClass" : "com.mycompany.model.MyObject"
    
  2. # 2 楼答案

    好吧,我是这两本书的作者:

    • 当前的JSON模式验证规范
    • Java库是当今Java中最常用的JSON模式验证工具:json-schema-validator

    所以我可以回答你的问题,基本答案是否定的

    为什么?因为目前还没有定义模式继承

    使用allOf时,需要allOf中的所有模式都匹配;如果您对这个或那个JSON中可能存在的内容要求严格,那么您将在false中添加additionalProperties。因此,你不能继承

    真正的解决方案是我为v5草案提出的一种机制:$merge$patch关键字。这将允许使用RFC 7386或RFC 6902(更多信息,请参见here)修补模式,并实现模式继承

    简而言之:

    • 如果将additionalProperties设置为false,并且基本的JSON是一个对象,则无法定义其他对象成员
    • 有了这两个新的关键字,你可以