数组JSON模式中实体的引用对象JSON模式

时间:2019-02-15 12:34:35

标签: mule jsonschema anypoint-studio raml

我正在使用Anypoint Studio 7.2.3和Mule运行时4.1编写RAML。

我有一个用于订单对象的JSON模式,并且我还需要一个用于订单对象列表的JSON模式。我以为可以在JSON架构中引用订单对象以保存在2个架构中保持相同字段的订单列表,但是我看到一个错误,因为$ schema出现两次,并且在添加一个JSON示例时显示错误RAML中的订单列表。

是否可以有一个可由订单列表JSON模式引用的单独的订单对象JSON模式?

订购对象JSON模式(简化版本)

{
    "type": "object",
    "$schema": "http://json-schema.org/draft-04/schema",
    "properties": {
        "orderId": {
            "type": "string",
            "maxLength": 255            
        },
        "comments": {
            "type": "string",
            "maxLength": 255            
        }                                       
    },
    "required": [
        "orderId"
    ]
}

订单列表JSON模式

{
    "type": "array",
    "$schema": "http://json-schema.org/draft-04/schema",
    "properties": {
        "$ref": "#Order"
    }
}

下面的JSON模式适用于订单列表,但意味着我将需要在2个独立的模式中维护字段,以便对例如orderId表示我将需要在订单对象架构和订单列表架构中对其进行更改。

{
    "type": "array",
    "$schema": "http://json-schema.org/draft-04/schema",
    "properties": {
        "orderId": {
            "type": "string",
            "maxLength": 255            
        },
        "comments": {
            "type": "string",
            "maxLength": 255            
        }                                       
    },
    "required": [
        "orderId"
    ]
}

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

只需在OrderList模式中将“属性”更改为“项目”即可。另外,请在同一文件夹中引用文件名,或在其他位置插入文件的完整路径。请参见下面的代码:

{
    "type": "array",
    "$schema": "http://json-schema.org/draft-04/schema",
    "items": {
        "$ref": "order.schema.json"
    }
}

[]的