2

oneOf value と value_num が必須フィールドとして存在する必要がありますが、両方は必要ありません。これらのオプションはどれも機能しません。「additionalProperties」を追加しようとしました: false.value および value_num フィールド宣言を削除しようとしました。

{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
    "observation": {
        "type": "array",
        "minItems": 1,
        "items": {
            "type": "object",
            "properties": {
                "timestamp": {
                    "type": "string",
                    "format": "date-time"
                },
                "eventType": {
                    "type": "string"
                },
                "value": {
                    "type": "object"
                },
                "value_num": {
                    "type": "number"
                }

            },
            "oneOf": [{
                "properties": {
                    "value": {
                        "type": "object"
                    },
                    "required": ["value"]
                }
            }, {
                "properties": {
                    "value_num": {
                        "type": "number"
                    },
                    "required": ["value_num"]
                }
            }],
            "required": [
                "timestamp",
                "eventType"
            ]
        }
    }
},
"required": [
    "observation"
]

}

items.properties ブロック内に oneOf を追加しようとしました。私が本当に欲しいのはこれだけです:"oneOf": [{"value", "value_num"}],

どんな助けでも大歓迎です。

ティア、

4

2 に答える 2

0

次のように問題をほぼ修正しました。

{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
    "observation": {
        "type": "array",
        "minItems": 1,
        "items": {
            "type": "object",
            "properties": {
                "timestamp": {
                    "type": "string",
                    "format": "date-time"
                },
                "eventType": {
                    "type": "string"
                },
                "value": {
                    "type": "object"
                },
                "value_num": {
                    "type": "number"
                }

            },
            "oneOf": [{"value": {
                    "type": "object"
                },
                "value_num": {
                    "type": "number"
                }}],
            "required": [
                "timestamp",
                "eventType"
            ]
        }
    }
},
"required": [
    "observation"
]

}

無効にならないのは、value と value_num の両方が存在し、1 つだけが存在する次のようなペイロードです。

{
"info": {
    "deviceId": "482038028341324",
    "companionId": "asdfas76df76sdf",
    "userId": "1234"
},
"observation": [{
        "timestamp": "2013-12-31T23:59:59-01:00",
        "eventType": "BOOT_EVENT",
        "value_num": 6,
        "value": {"boot":true}
    }
]

}

于 2016-06-16T04:10:10.463 に答える