json-schema-validator 0.0.2

json-schema-validator 0.0.2

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布最新发布2016年1月

Jakob JensenKrzysztof Piatkowski 维护。



  • 作者
  • krpiatkowski 和 CodeReaper

基于 https://json-schema.fullstack.org.cn 的 iOS json schema 验证器

安装

可以通过包括 /json-schema-validator/Classes/*/json-schema-validator/Resources/* 将类添加到项目中

甚至更简单,只需将其作为 CocoaPod 安装

使用

NSError *errors = [[TFJSONSchemaValidator validator] validate:json withSchema:@"someSchema"]

参数 json 是通过使用 NSJSONSerializer 创建的 json 字符串的 NSDictionary 表示形式

如果读取或解析方案失败,则 errors 是一个 NSJSONSerializer 错误。否则 errors.userInfo[@"errors"] 是一个包含所有验证错误的数组

提供的任何方案都将与 Core/Validation schema 进行验证

与规范的不同

实例类型验证

如果对象有多个以下内容之一:类型、枚举、$ref、allOf、anyOf、not

验证失败,并以 "schema-error" 为前缀

原因是因为规范没有提到如果出现多个关键字会发生什么

以下是什么意思?

{ 
    "allOf" : [{"type" : "string"}],
    "anyOf" : [{"type" : "number"}, {"type" : "null"}]
}

正则表达式

正则表达式引擎和语法不是 ecma262,而是使用 ICU

原因在于 ICU 是内置在 Objective-C 中的引擎,使得解析和运行表达式变得更简单

$ref 可以引用构造函数中指定的同一个 NSBundle 中的方案(默认是 [NSBundle mainBundle])。方案是这样引用的:bundle://filename.json

未实现的部分

数字

  • multipleOf
  • exclusiveMaximum
  • 独家最小值

字符串

  • 格式

数组

  • 独特项

对象

  • 最大属性
  • 最小属性
  • 附加属性
  • 依赖关系

实例类型

  • 否定
  • 定义(只有外部以及根级别以下的任何定义缺失)