2013-10-24 23 views
2

所以我有一個json架構,並且在這個架構中,我引用了另一個json文件中的兩個架構,這很好。JSON:引用帶有id的json架構

{ 
    "id": "http://ourdns.co.za/public/assets/json/formSchema.json", 
    "type": "object", 
    "properties": { 
    "person": { 
     "type": "object", 
     "id": "#person", 
     "properties": { 
     "first_name": { 
      "title": "What is your first name", 
      "type": "string" 
     }, 
     "last_name": { 
      "title": "What is your last name", 
      "type": "string" 
     } 
     } 
    }, 
    "person_api": { 
     "type": "object", 
     "id": "#person" 
    } 
    } 
} 

什麼,我想有一個根JSON模式引用其他兩種模式的JSON是外部根源。這與我當前的模式不同,我在一個文件中包含所有模式(不理想)。有一個小問題,我不能使用$ref作爲參考關鍵字,因爲我們使用的插件是does not support這個。但是我們發現id可以用作引用關鍵字(JsonForm是插件)。那麼我們如何使用id關鍵字獲得這些關鍵字,因爲它似乎不起作用?的

{ 
    "id": "http://ourdns.co.za/public/assets/json/formSchema.json", 
    "type": "object", 
    "properties": { 
    "person_api": { 
     "type": "object", 
     "id": "public/assets/person.json" 
    } 
    } 
} 

1)我們如何從外部調用同一個數據,如.. "id": "public/assets/person.json"而是在同一個文件相結合? 2)如果我們只需要person.json模式中的person.firstname,我們將如何檢索特定屬性?

{ 
    "id": "http://dsn.co.za/public/assets/json/person.json", 
    "type": "object", 
    "properties": { 
    "first_name": { 
     "title": "What is your first name", 
     "type": "string" 
    } 
    } 
} 

回答

5

您不能僅使用id自行執行引用。爲了參考,你使用$ref

id關鍵字可以提供一個URL的模式爲目標爲引用:

{ 
    "id": "http://example.com/schemas/example", 
    "type": "object", 
    "properties": { 
     "arr1": { 
      "id": "#item-schema", 
      ... 
     }, 
     "arr2": {"$ref": "#item-schema"} 
    } 
} 

這是這樣,你可以參考使用漂亮的URL模式(例如http://example.com/schemas/example#item-schema)而不是使用JSON指針片段語法。它還允許您重新組織模式(例如,將項目模式移動到definitions),而無需更改URL。

但是,對於參考本身,您仍然需要使用$ref。如果你需要這個功能,你需要使用任何工具來支持它。

+0

插件不支持'$ ref',這就是我選擇'id'來引用文件的主要原因 –

+1

正如我在回答(爲了清楚起見編輯)中所說的,'$ ref'是引用文件的唯一方法。如果你的插件不支持'$ ref',它不支持引用。 – cloudfeet

+0

我明白了,所以id沒有解決。謝謝。 –