2017-11-22 4 views
0

JSONスキーマの検証に関するヘルプをリクエストしています(以下はJSONとスキーマのサンプルです)。私は "ppd"スキーマルールを具体的に指定する方法を考え出しています。 "cfg"は文字列、文字列のマップで、Enum定義、つまり "inputDateTimeFormat"の値によってこのマップのキーと値のエントリをさらに制限する必要があります。 keyが "inputDateTimeFormat"ならばエンコードするべきであるので、許可される値は日付の時刻形式に一致するパターンであり、同様にkeyが "valuemapping"の場合、許容される値はパターンマッチングk = v(以下の例)です。JSONスキーマの検証とEnum制約のある文字列のマップ

これを達成する方法を教えてください。

JSONサンプル -

{ 
    "sm": [ 
    { 
     "mid": "id-1", 
     "ppd": [ 
     { 
      "name": "cc-1", 
      "cfg": { 
      "columns": "v-1", 
      "valueMapping": "B=01;S=02" 
      } 
     }, 
     { 
      "name": "cc-2", 
      "cfg": { 
      "columns": "v-2", 
      "inputDateTimeFormat": "ddMMMyyyy_HH:mm:ss.SSSSSS", 
      "outputDateTimeFormat": "yyyy-MM-dd'T'HH:mm:Ss.SSSZ" 
      } 
     }, 
     { 
      "name": "cc-3", 
      "cfg": { 
      "columns": "v-3;v-4", 
      "markers": "d=01" 
      } 
     } 
     ] 
    } 
    ] 
} 

JSONスキーマ:

{ 
    "type": "object", 
    "$schema": "http://json-schema.org/draft-06/schema", 
    "id": "source-mappings-schema", 
    "required": true, 
    "properties": { 
    "sm": { 
     "type": "array", 
     "id": "source-mappings-schema/sm", 
     "required": true, 
     "items": { 
     "type": "object", 
     "id": "source-mappings-schema/sm/0", 
     "required": true, 
     "properties": { 
      "mappingId": { 
      "type": "string", 
      "id": "source-mappings-schema/sm/0/mappingId", 
      "required": true 
      }, 
      "ppd": { 
      "type": "array", 
      "id": "source-mappings-schema/sm/0/ppd", 
      "required": true, 
      "items": { 
       "type": "object", 
       "id": "source-mappings-schema/sm/0/ppd/0", 
       "required": true, 
       "properties": { 
       "name": { 
        "type": "string", 
        "id": "source-mappings-schema/sm/0/ppd/0/name", 
        "required": true 
       }, 
       "cfg": { 
        "type": "array", 
        "id": "source-mappings-schema/sm/0/ppd/0/cfg", 
        "required": true, 
        "items": { 
        "type": "string" 
        } 
       } 
       } 
      } 
      } 
     } 
     } 
    } 
    } 
} 

答えて

0

スキーマで起動するには、いくつかの問題が含まれています。

$スキーマタグが間違っている、

"$schema": "http://json-schema.org/draft-06/schema#", 

「必要な」プロパティが必要とされているプロパティ名の配列(ないブール値)であると考えられるべきであるので、あなたはこれを適用する必要があります上記のレベルで

最後にcfgの検証。 'additionalProperties'のスキーマを指定することで、指定されていないすべてのキー値(文字列のマップなので、これを文字列に設定しましたが、最大長などの他のルールも追加できます) 。 あなたが知っているキーについては、検証ルールを適用してそれぞれのプロパティを追加することができます(追加したルールによって、そのコンセプトが示され、使用のために調整する必要があります)。

enter image description here

     "cfg": { 
           "type": "object", 
           "additionalProperties": { 
            "type": "string" 
           }, 
           "properties": { 
            "inputDateTimeFormat": { 
             "type": "string", 
             "format": "date-time" 
            }, 
            "valuemapping": { 
             "type": "string", 
             "pattern": "[a-z]\\=[a-z]" 
            } 
           } 
          } 
関連する問題