如何使用Json.net验证多个架构?

时间:2019-01-18 17:12:51

标签: c# json json.net jsonschema json-schema-validator

在以下情况下,从不同设备到处理单元的传入消息将根据消息类型处理消息。

  1. 带有以下hobbies模式定义的消息,例如schema-hobbies

    JSchema hobbiesSchema = JSchema.Parse(@"{
                   'type': 'object',
                   'properties': {
                   'name': {'type':'string'},
                   'hobbies': {
                      'type': 'array',
                      'items': {'type':'string'}
                   }}}");
    
  2. 带有以下countries模式定义的消息,例如schema-countries

    JSchema countriesSchema = JSchema.Parse(@"{
                   'type': 'object',
                   'properties': {
                   'name': {'type':'string'},
                   'countries': {
                      'type': 'array',
                      'items': {'type':'string'}
                   }}}");
    
  3. 不遵循以上任何Schema定义的邮件

现在,我可以按照以下步骤验证hobbies消息

    JObject hobbies = JObject.Parse(@"{
    'name': 'James',
    'hobbies': ['.NET', 'Blogging', 'Reading', 'Xbox', 'LOLCATS']
    }");

    IList<string> errorMessages;
    bool valid = hobbies.IsValid(hobbiesSchema , out errorMessages);

    Console.WriteLine(valid);

我将能够合并架构并验证不同的传入消息。我怎样才能做到这一点?

例如:

如果消息杰森是,

    {
    'name': 'James',
    'hobbies': ['.NET', 'Blogging', 'Reading', 'Xbox', 'LOLCATS']
    }

输出应为:True

如果消息杰森是,

    {
    'name': 'James',
    'countries': ['India', 'Australia']
    }

输出应为:True

如果消息杰森是,

    {
    'Time': '03:45 AM',
    'heartbeats': ['30', '45']
    }

输出应为:False

注意:

  1. 此问题中使用的示例架构仅供参考。真实的架构非常复杂。

0 个答案:

没有答案