2015-02-24 17 views
7

tôi có một đối tượng trong đó "khóa" của thuộc tính sẽ được đặt động ... cách đúng đắn để xác định điều này trong Lược đồ JSON là gì?Giản đồ JSON cho thuộc tính động

Đây là những gì đối tượng của tôi trông giống như

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

Các "chủ chốt" của "column_definitions" sẽ luôn là động (nó có thể được "Field_1" cũng giống như nó có thể được "Field_24"

là gì thích hợp để xác định này trong JSON Schema

tôi không muốn chỉ nói "loại": "đối tượng", vì tôi muốn để có thể xác định các tính chất tĩnh "type" và "isNullable" Cũng , tôi không thể sử dụng "oneOf" đơn giản chỉ vì tôi không biết thứ gì e "khóa" có thể có khả năng và không có giá trị tiềm năng được đặt.

Đây là những gì tôi có cho đến nay:

{ 
    "$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

Bạn có thể giải quyết được không? Tôi đang đối mặt với tình huống tương tự bây giờ – mnvbrtn

Trả lời

8

Tôi nghĩ rằng những gì bạn đang tìm kiếm là patternProperties lĩnh vực, chứ không phải là một properties. Nên trông giống như thế này, giả sử bạn chỉ muốn phù hợp với tất cả mẫu:

{ 
    "$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 
         } 
        } 
       } 
      } 
     } 
    } 
} 
Các vấn đề liên quan