我是JSON Schema的新手,并且读到了什么是JSON Schema等。但并没有得到如何将JSON Schema链接到JSON以针对该JSON Schema进行验证的信息。谁能解释?

我将非常感谢向我解释此情况的人,因为自1个月以来我一直不知道这种情况,但我没有这样做。请任何人用简单的词解释我,我如何将JSON模式链接到JSON文件以根据JSON模式检查和验证JSON文件数据?

最佳答案

查看json.net标记,我认为您打算针对C#中的json数据进行JSON数据验证。

这非常简单/直接。

  • 您将模式解析为JsonSchema对象实例。
  • 将json数据解析为JObject对象实例。
  • 调用IsValid实例变量的JObject方法(以已解析的JsonSchema对象实例为参数)。此方法调用将返回bool-true(如果有效),false(如果无效)。

  • 这是2个完整的示例

    模式是有效的示例
    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.
    

    资料来源: newtonsoft.com / Validating JSON with JSON Schema

    更新1:似乎架构验证已移到其自己的Library / Nuget Package中。但是请注意,这不是完全免费用于商业项目(如果您的情况)。定价页面上有更多信息。

    Json.NET Schema - Complete JSON Schema framework for .NET

    还有一个在线的json模式验证器=> http://www.jsonschemavalidator.net/

    10-07 14:29
    查看更多