2016-07-27 119 views
0

我正在編寫一個可以從文件中讀取JSON數據的軟件。該文件包含「person」 - 一個值爲對象數組的對象。我打算使用驗證庫的JSON模式來驗證內容,而不是自己編寫代碼。什麼是符合JSON Schema Draf-4的正確模式,代表下面的數據?對象的JSON模式,其值是一個對象數組

{ 
    "person" : [ 
     { 
     "name" : "aaa", 
     "age" : 10 
     }, 
     { 
     "name" : "ddd", 
     "age" : 11 
     }, 
     { 
     "name" : "ccc", 
     "age" : 12 
     } 
    ] 
} 

寫下來的模式在下面給出。我不確定這是否正確或是否有其他形式?

{ 
    "person" : { 
     "type" : "object", 
     "properties" : { 
     "type" : "array", 
     "items" : { 
      "type" : "object", 
      "properties" : { 
       "name" : {"type" : "string"}, 
       "age" : {"type" : "integer"} 
      } 
     } 
     } 
    } 
} 

回答

1

實際上只有一行在錯誤的地方,但是一行破壞了整個模式。 「person」是對象的屬性,因此必須在properties關鍵字下。通過在頂部放置「person」,JSON Schema將其解釋爲關鍵字而不是屬性名稱。由於沒有person關鍵字,因此JSON Schema會忽略它和它下面的所有內容。因此,它與針對空模式{}進行驗證相同,該模式對JSON文檔可包含的內容沒有限制。任何有效的JSON都對空模式有效。

{ 
    "type" : "object", 
    "properties" : { 
     "person" : { 
     "type" : "array", 
     "items" { 
      "type" : "object", 
      "properties" : { 
       "name" : {"type" : "string"} 
       "age" : {"type" : "integer"} 
      } 
     } 
     } 
    } 
} 

順便說一下,有幾個在線的JSON模式測試工具可以幫助您在制定模式時提供幫助。這一個是我轉到http://jsonschemalint.com/draft4/#

而且,這裏是一個偉大的JSON模式的參考,可以幫助你出去,以及:https://spacetelescope.github.io/understanding-json-schema/

相關問題