我正在尝试使用JSON定义数据结构,并使用具有JSON定义的结构定义来验证实际数据。我正在c#中尝试这个。
例如:
"PlayerScore":{
"fields":[
{
"name":"Runs",
"type":"short",
"isRequired":true
},
{
"name":"Wickets",
"type":"byte",
"isRequired":false
}
]
上面是数据结构的定义。下面是实际数据。
{
"Runs": 20,
"Wickets": 1
},
{
"Runs": 20
}
仅当它是必填字段时,我才想验证“运行”和“检票”的数据类型。
答案 0 :(得分:1)
不是很了解您,但是如果您尝试根据Json Schema验证json。这篇文章可能是您需要的。 Json Schema Validation
不确定为什么要走那条路线。您足以建立一个C#模型并使用数据注释针对它验证json吗? (假设是api)在这里Data Annotations
了解它们答案 1 :(得分:1)
Newtonsoft的Json.NET(https://www.nuget.org/packages/Newtonsoft.Json/)支持JSON验证及其模式。这是他们文档中的示例。
验证返回真的样本
string schemaJson = @"{
'description': 'A person',
'type': 'object',
'properties':
{
'name': {'type':'string'},
'hobbies': {
'type': 'array',
'items': {'type':'string'}
}
}
}";
JsonSchema schema = JsonSchema.Parse(schemaJson);
JObject person = JObject.Parse(@"{
'name': 'James',
'hobbies': ['.NET', 'Blogging', 'Reading', 'Xbox', 'LOLCATS']
}");
bool valid = person.IsValid(schema);
// true
验证返回假的示例
JsonSchema schema = JsonSchema.Parse(schemaJson);
JObject person = JObject.Parse(@"{
'name': null,
'hobbies': ['Invalid content', 0.123456789]
}");
IList<string> messages;
bool valid = person.IsValid(schema, out messages);
// false
// Invalid type. Expected String but got Null. Line 2, position 21.
// Invalid type. Expected String but got Float. Line 3, position 51.