2015-02-24 9 views
7

मेरे पास एक ऑब्जेक्ट है जिसमें संपत्ति की "कुंजी" गतिशील रूप से सेट की जाएगी ... JSON स्कीमा में इसे परिभाषित करने का सही तरीका क्या है?गतिशील गुणों के लिए JSON स्कीमा

यह (यह "Field_1" हो सकता है बस के रूप में ज्यादा के रूप में यह हो सकता है "Field_24"

मेरी वस्तु की तरह

{ 
    "column_definitions": [  
    { 
    "Field_1": { 
         "type": "Numeric", 
       "isNullable": false 
    } 
    }, 
    { 
    "Field_2": { 
         "type": "Boolean", 
       "isNullable": true 
     } 
    } 
], 
"row_values": [ ... ] 
} 

"column_definitions" की "कुंजी" हमेशा गतिशील हो जाएगा लग रहा है क्या है "वस्तु" क्योंकि मैं "isNullable" इसके अलावा स्थिर गुणों "प्रकार" और परिभाषित करने के लिए सक्षम होना चाहते हैं:

क्या JSON स्कीमा में यह परिभाषित करने के लिए उचित

मैं सिर्फ इतना कहना "प्रकार" चाहते हैं है? , मैं बस "oneOf" का उपयोग नहीं कर सकता क्योंकि मैं नहीं जानता कि वें क्या है ई "कुंजी" संभावित रूप से हो सकता है और एक सेट संभावित मूल्य नहीं है।

यह मैं अब तक है:

{ 
    "$schema": "http://json-schema.org/draft-04/schema", 
    "title": "SomeSchema", 
    "description": "SomeDescription", 
    "type": "object", 
    "properties": 
    { 
    "column_definitions": { "type": ["array", "null"], "items": { "$ref": "#/definitions/columnDef" }, "readOnly": true }, 
    "row_values": { "type": ["array", "null"], "items": { "type": "object" }, "readOnly": true } 
    }, 
    "definitions": { 
    "columnDef" : { 
     "type": "object", 
     "properties": { 
     "THIS_IS_MY_DYNAMIC_PROPERTY": { 
      "type": "object", 
      "properties": { 
      "type": { "type" : ["string", "null"], "enum": ["Text", "Boolean", "Numeric", "DateTime"], "readOnly": true }, 
      "isNullable": { "type" : ["boolean", "null"], "readOnly": true } 
      } 
     }    
     } 
    } 
    } 
} 
+0

क्या आप इसे हल करने में सक्षम हैं? मुझे अब एक ही स्थिति का सामना करना पड़ रहा है – mnvbrtn

उत्तर

8

मुझे लगता है कि आप देख रहे हैं patternProperties क्षेत्र के बजाय properties से एक है। ऐसा कुछ दिखाना चाहिए, मान लीजिए कि आप सिर्फ एक पैटर्न चाहते हैं:

{ 
    "$schema": "http://json-schema.org/draft-04/schema", 
    "title": "SomeSchema", 
    "description": "SomeDescription", 
    "type": "object", 
    "properties": { 
     "column_definitions": { 
      "type": [ 
       "array", 
       "null" 
      ], 
      "items": { 
       "$ref": "#/definitions/columnDef" 
      }, 
      "readOnly": true 
     }, 
     "row_values": { 
      "type": [ 
       "array", 
       "null" 
      ], 
      "items": { 
       "type": "object" 
      }, 
      "readOnly": true 
     } 
    }, 
    "definitions": { 
     "columnDef": { 
      "type": "object", 
      "patternProperties": { 
       ".*": { 
        "type": "object", 
        "properties": { 
         "type": { 
          "type": [ 
           "string", 
           "null" 
          ], 
          "enum": [ 
           "Text", 
           "Boolean", 
           "Numeric", 
           "DateTime" 
          ], 
          "readOnly": true 
         }, 
         "isNullable": { 
          "type": [ 
           "boolean", 
           "null" 
          ], 
          "readOnly": true 
         } 
        } 
       } 
      } 
     } 
    } 
} 
संबंधित मुद्दे