#c# #json #json.net #json-schema-validator #azure-policy
#c# #json #json.net #json-схема-валидатор #azure-политика
Вопрос:
Я пытаюсь создать средство проверки схемы JSON. Моя схема Json проверяет определенное значение свойства и на основе этого присваивает значение другому свойству. В моем коде на C # я хочу выполнить действие, основанное на этом. Если вы заметили в моей схеме, если страна является либо «Соединенными Штатами Америки», либо «Канадой», тогда я устанавливаю значение «совместимый», иначе «без жалобы». И в моем коде на C # мне нужно значение «effect», чтобы я мог выполнить некоторую дальнейшую обработку. Возможно ли это? Если нет, каким должен быть мой подход? Я новичок в схеме Json (я видел, что политики Azure делают что-то похожее на это.)
Вот моя схема
{
"type": "object",
"properties": {
"street_address": {
"type": "string"
},
"country": {
"enum": [ "United States of America", "Canada" ]
},
"effect": {"type": "string"}
},
"if": {
"properties": { "country": { "const": "United States of America" } }
},
"then": {
"effect": "Compliant"
},
"else": {
"effect": "Non-Compliant"
}
}
Вот мой документ
{
"properties": {
"street_address": "1600 Pennsylvania Avenue NW",
"country": "Canada",
"postal_code": "20500"
}
}
Вот мой код на C #
JObject data = null;
var currentDirectory = Directory.GetParent(Environment.CurrentDirectory).Parent.Parent.FullName;
using (StreamReader r = new StreamReader(currentDirectory @"/Documents/document.json"))
using (JsonTextReader reader = new JsonTextReader(r))
{
data = (JObject)JToken.ReadFrom(reader);
}
JsonSchema schema = JsonSchema.Parse(File.ReadAllText(currentDirectory @"/Schemas/Schema.json"));
IList<string> messages;
var properties = (JObject)data["properties"];
bool valid = properties.IsValid(schema, out messages);
Комментарии:
1. Любой вклад в это, пожалуйста?
2. Вы поняли это?
3. @Tenzolinho, Нет. Я не