【问题标题】:How can i link the JSON Schema to my JSON to validate the JSON against?如何将 JSON Schema 链接到我的 JSON 以验证 JSON?
【发布时间】:2016-12-31 19:58:31
【问题描述】:

我是 JSON Schema 的新手,并且读过什么是 JSON Schema 等等。但我不明白如何将 JSON Schema 链接到 JSON 以针对该 JSON Schema 进行验证。谁能解释一下?

任何人都可以用简单的话向我解释一下,我如何将 JSON Schema 链接到 JSON 文件以根据 JSON Schema 检查和验证 JSON 文件数据?

【问题讨论】:

    标签: json jsonschema


    【解决方案1】:

    查看 json.net 标记,我得出的结论是,您打算在 C# 中针对 json 数据进行 JSON 数据验证。

    这非常简单/直接。

    1. 您将架构解析为JsonSchema 对象实例。
    2. 将json数据解析成JObject对象实例。
    3. 调用JObject 实例变量的IsValid 方法(将解析的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
    

    Schema 是 Ialid 示例

    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: 看起来架构验证已移出到它自己的库/Nuget 包中。但是请注意,这并不是在商业项目中完全免费使用的(如果这是您的情况)。定价页面有更多信息。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-18
      • 2019-10-18
      • 2015-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多