admin
管理员
管理员
  • UID1
  • 粉丝1
  • 关注0
  • 发帖数378
  • 社区居民
  • 忠实会员
  • 原创写手
阅读:910回复:0

JSON 框架模式(Schema)

楼主#
更多 发布于:2015-12-19 21:06
JSON模式是基于JSON格式定义JSON数据结构的规范。它被写在IETF草案,于2011年到期。 JSON模式:

  • 描述现有的数据格式

  • 干净的人类和机器可读的文档

  • 完成结构验证,可用于自动化测试

  • 完成结构验证,验证客户端提交的数据


JSON模式验证库

有几个验证器目前可用于不同的编程语言。目前最完整和最兼容的JSON模式验证可用JSV
[table=100%,#f7f7f7,#d6d6d6,1,rgb(214, 214, 214)][tr][td=1,1,101]语言[/td][td]程序库[/td][/tr][tr][td]C[/td][td]WJElement (LGPLv3)[/td][/tr][tr][td]Java[/td][td]json-schema-validator (LGPLv3)[/td][/tr][tr][td].NET[/td][td]Json.NET (MIT)[/td][/tr][tr][td]ActionScript 3[/td][td]Frigga (MIT)[/td][/tr][tr][td]Haskell[/td][td]aeson-schema (MIT)[/td][/tr][tr][td]Python[/td][td]Jsonschema[/td][/tr][tr][td]Ruby[/td][td]autoparse (ASL 2.0); ruby-jsonschema (MIT)[/td][/tr][tr][td]PHP[/td][td]php-json-schema (MIT). json-schema (Berkeley)[/td][/tr][tr][td]JavaScript[/td][td]Orderly (BSD); JSV; json-schema; Matic (MIT); Dojo; Persevere (modified BSD or AFL 2.0); schema.js.[/td][/tr][/table]

JSON模式示例

以下是一个基本的JSON模式,其中涵盖了经典的产品目录说明:
{
    "$schema": "http://json-schema.org/draft-04/schema#",
    "title": "Product",
    "description": "A product from Acme's catalog",
    "type": "object",
    "properties": {
        "id": {
            "description": "The unique identifier for a product",
            "type": "integer"
        },
        "name": {
            "description": "Name of the product",
            "type": "string"
        },
        "price": {
            "type": "number",
            "minimum": 0,
            "exclusiveMinimum": true
        }
    },
    "required": ["id", "name", "price"]
}

让我们来看看在这个模式中可以使用的各种重要的关键词:
[table=100%,#f7f7f7,#d6d6d6,1,rgb(214, 214, 214)][tr][td=1,1,103]关键字[/td][td]描述[/td][/tr][tr][td]$schema[/td][td]The $schema 关键字状态,这种模式被写入草案V4规范。[/td][/tr][tr][td]title[/td][td]将使用此架构提供一个标题[/td][/tr][tr][td]description[/td][td]架构的一点描述[/td][/tr][tr][td]type[/td][td]我们 JSON 数据类型关键字定义的第一个约束条件:它必须是一个JSON对象[/td][/tr][tr][td]properties[/td][td]定义各个键和它们的值类型,最小和最大值中要使用JSON文件[/td][/tr][tr][td]required[/td][td]这样可以使所需的属性的列表[/td][/tr][tr][td]minimum[/td][td]这是约束的值,并代表可接受的最小值[/td][/tr][tr][td]exclusiveMinimum[/td][td]如果“exclusiveMinimum”的存在,并且具有布尔值true的实例是有效的,如果它是严格的最低限度的值[/td][/tr][tr][td]maximum[/td][td]这是约束的值被提上表示可接受的最大值[/td][/tr][tr][td]exclusiveMaximum[/td][td]如果“exclusiveMaximum”的存在,并且具有布尔值true的实例是有效的,如果它是严格的值小于“最大”。[/td][/tr][tr][td]multipleOf[/td][td]数值实例有效反对“multipleOf”分工的实例此关键字的值,如果结果是一个整数。[/td][/tr][tr][td]maxLength[/td][td]字符串实例的长度被定义为字符的最大数目[/td][/tr][tr][td]minLength[/td][td]字符串实例的长度被定义为字符的最小数目[/td][/tr][tr][td]pattern[/td][td]String实例被认为是有效的,如果正则表达式匹配成功实例[/td][/tr][/table]也可以同时查阅 http://json-schema.org 的关键字可以用在定义JSON模式的完整列表。以上模式可用于测试的有效性,下面给出的JSON代码:
[
    {
        "id": 2,
        "name": "An ice sculpture",
        "price": 12.50,
    },
    {
        "id": 3,
        "name": "A blue mouse",
        "price": 25.50,
    }
]

 

 

 

 

 

 

 

异常中心网是一家专门收集整理程序员编程过程中遇到的常见异常(exception)以及各种异常问答中心的网站。异常中心网旨在,减少程序员在编码遇到异常,处理各种异常时间和痛苦,让程序员能更愉快的、快速的定位异常并查找对应的异常解决方案。异常中心网诚心打造最完美的编程社区为程序员用户服务,努力成为最好的程序员乐园程序员社区程序异常中心程序bug中心异常问答中心

 

喜欢0 评分0
游客

返回顶部