我正在编写一个可以从文件中读取JSON数据的软件。该文件包含" person" - 一个对象,其值是一个对象数组。我打算使用JSON模式验证库来验证内容,而不是自己编写代码。什么是符合JSON Schema Draf-4的正确模式,它代表以下数据?
{
"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"}
}
}
}
}
}
答案 0 :(得分: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 Schema测试工具可以帮助您制作模式。这是我的转到http://jsonschemalint.com/draft4/#
此外,这里有一个很棒的JSON Schema参考,可以帮助你:https://spacetelescope.github.io/understanding-json-schema/