任何人都可以解释如何将JSON Schema链接到我的JSON以验证JSON

时间:2016-12-31 19:58:31

标签: json json.net jsonp getjson geojson

我是JSON Schema的新手并且读过什么是JSON Schema等等。但是我没有得到如何将JSON Schema链接到JSON以验证该JSON Schema。谁能解释一下?

我将非常感谢那个对我有所了解的人,因为我从1个月开始就不知道这个情况并且没有这样做。请允许任何人用简单的话来解释我如何将JSON Schema链接到JSON文件以检查和验证JSON模式的JSON文件数据?

1 个答案:

答案 0 :(得分:1)

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

这很简单/直截了当。

  1. 您将架构解析为JsonSchema对象实例。
  2. 将json数据解析为JObject对象实例。
  3. 调用IsValid实例变量的JObject方法(将解析后的JsonSchema对象实例作为参数)。如果有效,此方法调用将返回bool - true,如果无效则返回false
  4. 以下是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
    

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

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

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