目录

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模式相关推荐

  1. json字符串转换成json对象,json对象转换成字符串,值转换成字符串,字符串转成值...

    json字符串转换成json对象,json对象转换成字符串,值转换成字符串,字符串转成值 原文:json字符串转换成json对象,json对象转换成字符串,值转换成字符串,字符串转成值 主要内容: 一 ...

  2. Json对象与Json字符串的转化、JSON字符串与Java对象的转换

    一.Json对象与Json字符串的转化 1.jQuery插件支持的转换方式: $.parseJSON( jsonstr ); //jQuery.parseJSON(jsonstr),可以将json字符 ...

  3. json对象与json字符串互转,ajax各常见函数

    1.使用jquer插件支持的转换方式: $.parseJSON( jsonstr ); //jQuery.parseJSON(jsonstr),可以将json字符串转换成json对象 2.浏览器支持的 ...

  4. Json对象和Json字符串

    JSON对象 有时候在做项目的时候时常将这两个概念弄混淆,尤其是在使用springmvc的时候,后台@RequestBody接受的是一个json格式的字符串,一定是一个字符串.  先介绍一下json对 ...

  5. json对象和json字符串转换方法

    在WEB数据传输过程中,json是以文本,即字符串的轻量级形式传递的,而客户端一般用JS操作的是接收到的JSON对象,所以,JSON对象和JSON字符串之间的相互转换.JSON数据的解析是关键. 先明 ...

  6. json数组 js html标签,js定义json对象数组 json 数组也是数组 //

    var jsonstr="[{'name':'a','value':1},{'name':'b','value':2}]"; var jsonarray = eval('('+js ...

  7. json对象和json字符串之间的转化

    json字符串----->json对象 使用JSON.parse()函数 var jsonStr = '{"name":"Winnie","ag ...

  8. jQuery中json对象与json字符串互换

    json字符串转json对象:jQuery.parseJSON(jsonStr); json对象转json字符串: JSON.st ringify(jsonObj); IE中可能对unicode使用& ...

  9. JavaScript对象、JSON对象、JSON字符串的区别

    一.首先看下什么是JSON JSON:JavaScript Object Natation,JavaScript对象的表现形式,已经发展成一种轻量级的数据交换格式. JavaScript对象的表现形式 ...

  10. json - json对象和json字符串直接的相互转换

    一.json字符串转json对象 1.json字符串转json对象 var obj = JSON.parse(str); //由json字符串转换为json对象 2.获取对象的value consol ...

最新文章

  1. 银行计算机设备管理 总结,【2017年银行自助设备中心年终总结】_银行自助设备工作总结...
  2. 编程之美2.14 求数组的子数组之和的最大值
  3. locate mysql-server_Mysql问题
  4. zookeeper启动失败+jps中没有QuorumPeerMain
  5. error LNK2019 unresolved external symbol __imp__IoDeleteDevice 错误
  6. windows服务器上安装的有mysql环境怎么创建数据库_Windows环境MySQL数据库安装方法...
  7. Internet控制报文协议ICMP
  8. 改 3 行代码不应该花一整天的时间
  9. gridview求和
  10. 计算机启动检测不到硬盘,电脑BIOS启动项找不到硬盘,该怎么办?
  11. Hello-Rust
  12. 如何做成gif动画图片?教你简单三步制作gif动图
  13. 2021年高考高密一中成绩查询,速递|2021年高密市高中阶段学校招生录取政策发布...
  14. ps将图片加入背景【实测成功】
  15. 华南理工大学数学专业考研试题参考解答
  16. isotope自动布局
  17. 从十亿个数中找出前1000个最大的数的算法
  18. svn如何取消某个文件的版本管理_怎样去除SVN中的某个版本之前的所有版本
  19. 【TCP/IP入门】20.IP地址
  20. 科思创筹建上海新工厂;宝投集团与通快签约大湾区激光应用研发中心项目 | 能动...

热门文章

  1. 华为机试:VLAN资源池
  2. 龙珠直播php,斗鱼、全民TV、龙珠等直播平台排行榜 看视频直播发展趋势
  3. python正则匹配数字_python——正则匹配数字
  4. O(lgn)计算斐波那契数
  5. mysql后台_使用MySQL在后台运行SQL查询
  6. 2016年5月27日更新后MSYS2的shell用法
  7. UE5 预览版载具模板工程车不能移动的问题
  8. SpringBoot整合MyBatis(七)
  9. Linux空白行:行号显示、空白行数统计、删除空白行
  10. 模型调参(一):weight decay(权重衰减)【“权重衰减”也叫“L1/L2正则化”】【权重衰减系数:正则项系数 λ】【对参数w有影响、对偏置b没影响】【偏置不加正则】