Условный результат схемы JSON

#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, Нет. Я не