json schema python,json schema生成工具
如果你曾经使用过XML Schema、RelaxNG或者ASN.1,那么你很可能已经知道JSON Schema是什么,你可以跳过这篇文章。如果你是第一次听到这个词,或者你不知道它,那么你来对地方了。
要了解JSON Schema是什么,首先要了解JSON是什么。
JSON代表“JavaScript对象符号”,一种简单的互联网数据交换格式。因为JavaScript存在于大多数Web浏览器中,而JSON是基于JavaScript的,所以在JavaScript中很容易得到支持。同时,它已经被证明是有用的和足够简单的,现在它也被用在许多其他不涉及互联网数据交换的环境中。
本质上,JSON是建立在以下数据结构之上的:
Object: {key1: value1 , key2: value2} Array: [first , second , This ]Value:42 3.1415926 String:这是一个字符串过时Pluto: true false null: null这些类型在大多数编程语言中比较接近。
通过这些简单的数据类型,可以表达各种结构化数据。然而,这种巨大的灵活性带来了巨大的责任,因为同一个概念可以用无数种方式表达。例如,您可以想象用不同的方式在JSON中表达关于某人的信息:
{ 姓名:复杂的老鼠华盛顿,生日: 1732年2月22日,地址:美国弗吉尼亚州芒特弗农 }以及:
{first_name: complex mouse , last _ name: Washington , birthday: 1732-02-22 , address : 3200 Mount Vernon memorial highway ,City: Mount Vernon , State: Virginia , Country: United States}}以上两种表达方式同样有效,但第二种明显比第一种更正式。数据的设计很大程度上取决于它在应用程序中的预期用途,因此这里没有正确或错误的答案。然而,当一个应用程序请求并期望通过API获得一个人的JSON记录时,确切地知道记录应该如何组织是很重要的。也就是说,当我们需要知道JSON数据中的预期字段以及这些值是如何表示的时,这就是JSON Schema的用武之地。
下面的JSON模式片段描述了上面的第二个例子是如何构建的。这里就不解释细节了,但是如果你仔细看的话,可以看到上面第二个例子中的JSON数据结构和每个字段的类型信息在这里都解释的很清楚。
{ type: object , properties :{ type: string }, last_name: { type: string },生日:{ type : string , format: date }, address: { type: object , properties :{ street _ address :{ type : string }, city: { type: string },State: {type: string}, country : type : string }:{ type : type : string :{ type : type :
{ 姓名:复鼠华盛顿,生日: 1732年2月22日,地址:美国弗吉尼亚州芒特弗农 }复制代码。然而,第二个例子是通过:
{first_name: complex mouse , last _ name: Washington , birthday: 22-02-1732 , address : street _ address : 3200 Mount Vernon memorial highway ,City: Mount Vernon , State: Virginia , Country : United State } }你可能注意到JSON Schema本身就是用JSON写的。它是JSON数据的规范,而不是计算机程序。只是一种“描述JSON数据结构”的声明格式。这既是它的优点,也是它的缺点(类似于其他模式语言)。它能简单而简明地描述数据的表层结构,并能在程序运行时用来自动验证数据。但是,因为JSON Schema不能包含任意代码,所以对不能表达的数据元素之间的关系有一些限制。因此,对于足够复杂的数据格式,任何“验证工具”都可能有两个验证阶段:一个在结构级别,另一个在语义级别。对于结构级检查,可以使用模式语言。对于语义级检查,可能有必要使用更通用的编程语言。
JSON在API的设计和实现中起着重要的作用。具有JSON模式验证能力的API实现可以帮助自动验证来自用户的输入数据,它可以应用于程序运行时需要验证的各种场景。这可以帮助开发者以更加标准化和严谨的方式描述其API中携带的JSON数据,同时,编写更少的手动验证代码。
可惜目前流行的REST API设计不能直接使用JSON Schema带来的这种能力。这很大程度上是因为,在REST API的设计理念中,API所请求的参数并不是一个JSON对象,而是以资源模型的方式来描述的,这使得无法使用JSON Schema来描述和自动验证这类API上传递的数据。
在灵长目科技CEAMS通用企业应用接口管理系统中,系统没有使用REST API的设计风格,而是参考了经典的SOAP协议设计,规定API的请求参数和返回结果必须是JSON对象或数组,并为开发者提供了一个具有JSON Schema支持的API规范设计指南,用户可以方便地在自己的API上设计和制定JSON数据规范。同时,设计的JSON Schema会在程序执行时完成对请求的JSON数据和返回结果的验证,有助于提高API数据的安全性,避免繁琐的手写验证码。
JSON Schema除了用于验证JSON数据,还可以为JSON数据提供清晰严谨的语句,在自动化API文档、自动生成输入表单、JSON数据可视化等方面也有很好的应用场景。有许多开源项目提供了基于JSON模式的自动输入表单生成功能。CEAMS系统集成了众所周知的Angular Schema形式,作为开发者清晰直观的API测试工具。这类工具有助于开发人员进一步简化API测试过程,提高测试效率。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。