JSON对象与JSON模式
目录
JSON 对象
JSON 对象
创建简单的对象
访问对象值
循环对象
创建数组对象
嵌套 JSON 对象
JSON 对象和字符串的区别
JSON 模式
JSON 模式(Schema)
JSON 模式验证库
JSON 与 XML 对比
JSON 与 XML 对比
冗余度
数组用法
解析
示例
JSON:
XML:
JSON 对象
JSON 对象
一个简单的 JSON 对象语法:
{ "name":"w3cschool", "alexa":8000, "site":null }
JSON 对象使用在大括号({})中书写,对象可以包含多个 key/value(键/值)对。
其中:
- key 必须是字符串,value 可以是合法的 JSON 数据类型(字符串, 数字, 对象, 数组, 布尔值或 null)。
- key 和 value 中使用冒号(:)分割。
- 每个 key/value 对使用逗号(,)分割。
创建简单的对象
JSON 对象可以使用 JavaScript 创建。我们来看看使用 JavaScript 创建 JSON 对象的各种方式:
- 创建一个空对象:
var JSONObj = {};
- 创建一个新对象:
var JSONObj = new Object();
- 创建一个 bookname 属性值为字符串,price属性值为数字的对象。可以通过使用 '.' 运算符访问属性。
var JSONObj = { "bookname ":"VB BLACK BOOK", "price":500 };
访问对象值
用点号(.)和中括号([])完成对对象的访问
循环对象
你可以使用 for-in 来循环对象的属性:
var myObj = { "name":"w3cschool", "alexa":8000, "site":null };
for (x in myObj) {document.getElementById("demo").innerHTML += x + "
";
}
在 for-in 循环对象的属性时,使用中括号([])来访问属性的值:
var myObj = { "name":"w3cschool", "alexa":8000, "site":null };
for (x in myObj) {document.getElementById("demo").innerHTML += myObj[x] + "
";
}
创建数组对象
下面的例子展示了在 JavaScript 中使用 JSON 创建数组对象,可以将下面的代码保存为 json_array_object_w3cschool.htm:
<html>
<head>
<title>在 JavaScript 中使用 JSON 创建数组对象(w3cschool.cn)</title>
<script language="javascript" >document.writeln("<h2>JSON数组对象(w3cschool.cn)</h2>");var books = {"Pascal" : [ { "Name" : "Pascal Made Simple", "price" : 700 },{ "Name" : "Guide to Pascal", "price" : 400 }], "Scala" : [{ "Name" : "Scala for the Impatient", "price" : 1000 }, { "Name" : "Scala in Depth", "price" : 1300 }]
} var i = 0
document.writeln("<table border='2'><tr>");
for(i=0;i<books.Pascal.length;i++)
{ document.writeln("<td>");document.writeln("<table border='1' width=100 >");document.writeln("<tr><td><b>Name</b></td><td width=50>"+ books.Pascal[i].Name+"</td></tr>");document.writeln("<tr><td><b>Price</b></td><td width=50>"+ books.Pascal[i].price +"</td></tr>");document.writeln("</table>");document.writeln("</td>");
}for(i=0;i<books.Scala.length;i++)
{document.writeln("<td>");document.writeln("<table border='1' width=100 >");document.writeln("<tr><td><b>Name</b></td><td width=50>"+ books.Scala[i].Name+"</td></tr>");document.writeln("<tr><td><b>Price</b></td><td width=50>"+ books.Scala[i].price+"</td></tr>");document.writeln("</table>");document.writeln("</td>");
}
document.writeln("</tr></table>");
</script>
</head>
<body>
</body>
</html>
现在让我们尝试使用 IE 或者任意其他启用了 JavaScript 的浏览器打开这个页面,和会生成如下所示结果:
嵌套 JSON 对象
JSON 对象中可以包含另外一个 JSON 对象:
myObj = {"name":"w3cschool","alexa":10000,"sites": {"site1":"www.w3cschool.cn","site2":"m.w3cschool.cn","site3":"c.w3cschool.cn"}
}
你可以使用点号(.)或者中括号([])来访问嵌套的 JSON 对象。
x = myObj.sites.site1;
// 或者
x = myObj.sites["site1"];
JSON 对象和字符串的区别
JSON 对象和 JSON 字符串的区别:
JSON 对象
var str2 = { "name": "asan", "sex": "man" };
JSON 字符串(在{}两侧多了一对'')
var str1 = '{ "name": "deyuyi", "sex": "man" }';
JSON 模式
JSON 模式(Schema)
JSON 模式是一种基于 JSON 格式定义 JSON 数据结构的规范。它被写在 IETF 草案下并于 2011 年到期。JSON 模式:
- 描述现有数据格式。
- 干净的人类和机器可读的文档。
- 完整的结构验证,有利于自动化测试。
- 完整的结构验证,可用于验证客户端提交的数据。
JSON 模式验证库
目前有好几个验证器可用于不同的编程语言。但是目前最完整和兼容 JSON 模式的验证器是 JSV。
语言 | 程序库 |
---|---|
C | WJElement (LGPLv3) |
Java | json-schema-validator (LGPLv3) |
.NET | Json.NET (MIT) |
ActionScript 3 | Frigga (MIT) |
Haskell | aeson-schema (MIT) |
Python | Jsonschema |
Ruby | autoparse (ASL 2.0); ruby-jsonschema (MIT) |
PHP | php-json-schema (MIT). json-schema (Berkeley) |
JavaScript | Orderly (BSD); JSV; json-schema; Matic (MIT); Dojo; Persevere (modified BSD or AFL 2.0); schema.js. |
我们来看一下可以用于这一模式中的各种重要关键字:
关键字 | 描述 |
---|---|
$schema | $schema 关键字状态,表示这个模式与 v4 规范草案书写一致。 |
title | 用它给我们的模式提供了标题。 |
description | 关于模式的描述。 |
type | type 关键字在我们的 JSON 数据上定义了第一个约束:必须是一个 JSON 对象。 |
properties | 定义各种键和他们的值类型,以及用于 JSON 文件中的最小值和最大值。 |
required | 存放必要属性列表。 |
minimum | 给值设置的约束条件,表示可以接受的最小值。 |
exclusiveMinimum | 如果存在 "exclusiveMinimum" 并且具有布尔值 true,如果它严格意义上大于 "minimum" 的值则实例有效,实例有效的条件为严格意义 |
maximum | 给值设置的约束条件,表示可以接受的最大值。 |
exclusiveMaximum | 如果存在 "exclusiveMinimum" 并且具有布尔值 true,如果它严格意义上小于 "maximum" 的值则实例有效,实例有效的条件为严格意义 |
multipleOf | 如果通过这个关键字的值分割实例的结果是一个数字则表示紧靠 "multipleOf" 的数字实例是有效的。 |
maxLength | 字符串实例字符的最大长度数值。 |
minLength | 字符串实例字符的最小长度数值。 |
pattern | 如果正则表达式匹配实例成功则字符串实例被认为是有效的。 |
{"$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"]
}
可以在 http://json-schema.org 上检出可用于定义 JSON 模式的完整关键字列表。上面的模式可用于测试下面给出的 JSON 代码的有效性:
[{"id": 2,"name": "An ice sculpture","price": 12.50,},{"id": 3,"name": "A blue mouse","price": 25.50,}
]
JSON 与 XML 对比
JSON 与 XML 对比
XML:扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。
JSON(JavaScript Object Notation)是一种轻量级的文本数据交换格式,具有良好的可读和便于快速编写的特性,可在不同平台之间进行数据交换。
JSON 和 XML 都是人类可读的格式并且与语言无关。在现实环境中它们都支持创建,读取和解码。我们可以通过以下的因素来比较 JSON 和 XML:
冗余度
XML 文件庞大,文件格式复杂,传输占带宽;JSON 数据格式比较简单,易于读写,格式都是压缩的,占用带宽小。
XML 比 JSON 冗余,因此对我们来说编写 JSON 会更快。
数组用法
XML 被用来描述结构化数据,不包含数组;而 JSON 包含数组。
解析
可以使用 JavaScript 的 eval 方法解析 JSON。当针对 JSON 应用这个方法时,eval 返回描述的对象。
示例
下面分别展示了一个 XML 和 JSON 示例:
JSON:
{"company": Volkswagen,"name": "Vento","price": 800000
}
XML:
<car><company>Volkswagen</company><name>Vento</name><price>800000</price>
</car>
JSON对象与JSON模式相关推荐
- json字符串转换成json对象,json对象转换成字符串,值转换成字符串,字符串转成值...
json字符串转换成json对象,json对象转换成字符串,值转换成字符串,字符串转成值 原文:json字符串转换成json对象,json对象转换成字符串,值转换成字符串,字符串转成值 主要内容: 一 ...
- Json对象与Json字符串的转化、JSON字符串与Java对象的转换
一.Json对象与Json字符串的转化 1.jQuery插件支持的转换方式: $.parseJSON( jsonstr ); //jQuery.parseJSON(jsonstr),可以将json字符 ...
- json对象与json字符串互转,ajax各常见函数
1.使用jquer插件支持的转换方式: $.parseJSON( jsonstr ); //jQuery.parseJSON(jsonstr),可以将json字符串转换成json对象 2.浏览器支持的 ...
- Json对象和Json字符串
JSON对象 有时候在做项目的时候时常将这两个概念弄混淆,尤其是在使用springmvc的时候,后台@RequestBody接受的是一个json格式的字符串,一定是一个字符串. 先介绍一下json对 ...
- json对象和json字符串转换方法
在WEB数据传输过程中,json是以文本,即字符串的轻量级形式传递的,而客户端一般用JS操作的是接收到的JSON对象,所以,JSON对象和JSON字符串之间的相互转换.JSON数据的解析是关键. 先明 ...
- json数组 js html标签,js定义json对象数组 json 数组也是数组 //
var jsonstr="[{'name':'a','value':1},{'name':'b','value':2}]"; var jsonarray = eval('('+js ...
- json对象和json字符串之间的转化
json字符串----->json对象 使用JSON.parse()函数 var jsonStr = '{"name":"Winnie","ag ...
- jQuery中json对象与json字符串互换
json字符串转json对象:jQuery.parseJSON(jsonStr); json对象转json字符串: JSON.st ringify(jsonObj); IE中可能对unicode使用& ...
- JavaScript对象、JSON对象、JSON字符串的区别
一.首先看下什么是JSON JSON:JavaScript Object Natation,JavaScript对象的表现形式,已经发展成一种轻量级的数据交换格式. JavaScript对象的表现形式 ...
- json - json对象和json字符串直接的相互转换
一.json字符串转json对象 1.json字符串转json对象 var obj = JSON.parse(str); //由json字符串转换为json对象 2.获取对象的value consol ...
最新文章
- 银行计算机设备管理 总结,【2017年银行自助设备中心年终总结】_银行自助设备工作总结...
- 编程之美2.14 求数组的子数组之和的最大值
- locate mysql-server_Mysql问题
- zookeeper启动失败+jps中没有QuorumPeerMain
- error LNK2019 unresolved external symbol __imp__IoDeleteDevice 错误
- windows服务器上安装的有mysql环境怎么创建数据库_Windows环境MySQL数据库安装方法...
- Internet控制报文协议ICMP
- 改 3 行代码不应该花一整天的时间
- gridview求和
- 计算机启动检测不到硬盘,电脑BIOS启动项找不到硬盘,该怎么办?
- Hello-Rust
- 如何做成gif动画图片?教你简单三步制作gif动图
- 2021年高考高密一中成绩查询,速递|2021年高密市高中阶段学校招生录取政策发布...
- ps将图片加入背景【实测成功】
- 华南理工大学数学专业考研试题参考解答
- isotope自动布局
- 从十亿个数中找出前1000个最大的数的算法
- svn如何取消某个文件的版本管理_怎样去除SVN中的某个版本之前的所有版本
- 【TCP/IP入门】20.IP地址
- 科思创筹建上海新工厂;宝投集团与通快签约大湾区激光应用研发中心项目 | 能动...
热门文章
- 华为机试:VLAN资源池
- 龙珠直播php,斗鱼、全民TV、龙珠等直播平台排行榜 看视频直播发展趋势
- python正则匹配数字_python——正则匹配数字
- O(lgn)计算斐波那契数
- mysql后台_使用MySQL在后台运行SQL查询
- 2016年5月27日更新后MSYS2的shell用法
- UE5 预览版载具模板工程车不能移动的问题
- SpringBoot整合MyBatis(七)
- Linux空白行:行号显示、空白行数统计、删除空白行
- 模型调参(一):weight decay(权重衰减)【“权重衰减”也叫“L1/L2正则化”】【权重衰减系数:正则项系数 λ】【对参数w有影响、对偏置b没影响】【偏置不加正则】