JSON全面总结(1)
来源:互联网 发布:知我药妆 知乎 编辑:程序博客网 时间:2024/06/11 03:33
JSON是什么
JSON,说白了就是JavaScript用来处理数据的一种格式,这种格式非常简单易用。JSON大部分都是用来处理JavaScript和web服务器端之间的数据交换,把后台web服务器的数据传递到前台,然后使用JavaScript进行处理,例如ajax等
JSON支持的语言非常多,包括JavaScript、C#、PHP、Java等等,这是由于JSON独立于语言的轻量级的数据交换格式,这个特点有点类似于SQL语言
JSON的结构
JSON结构共有2种:无序的对象结构、有序的数组结构;
无序的对象结构
对象结构是使用大括号“{}”括起来的,大括号内是由0个或多个用英文逗号分隔的“关键字:值”对(key:value)构成的
var jsonObj = { "键名1":值1, "键名2":值2, …… "键名n":值n}
这里的键名是字符串,但是值可以是数值、字符串、对象、数组或逻辑true和false
有序的数组结构
JSON数组结构是用中括号“[]”括起来,中括号内部由0个或多个以英文逗号“,”分隔的值列表组成
var arr =[ { "键名1":值1, "键名2":值2 }, { "键名3":值3, "键名4":值4 }, ……]
在JSON数组中,每一对“{}”相当于一个JSON对象
JSON 数据格式
JSON是JavaScript Object Notation的简称,是一种轻量的数据表示方法。json格式采用key:value的方式记录数据,非常直观,比XML简洁,因而大受欢迎
添加 JSON
简单地说,JSON 可以将 JavaScript 对象中表示的一组数据转换为字符串,然后就可以在函数之间轻松地传递这个字符串,或者在异步应用程序中将字符串从 Web 客户端传递给服务器端程序。这个字符串看起来有点儿古怪,但是 JavaScript 很容易解释它,而且 JSON 可以表示比名称/值对更复杂的结构。例如,可以表示数组和复杂的对象,而不仅仅是键和值的简单列表
值的数组
当需要表示一组值时,JSON 不但能够提高可读性,而且可以减少复杂性
{ "people": [ { "firstName": "Brett", "lastName":"McLaughlin", "email": "brett@newInstance.com" }, { "firstName": "Jason", "lastName":"Hunter", "email": "jason@servlets.com" }, { "firstName": "Elliotte", "lastName":"Harold", "email": "elharo@macfaq.com" }]}
掌握了JSON格式后,在JavaScript中将JSON数据赋值给变量就很简单了。JSON是JavaScript原生格式,这意味着在JavaScript中处理JSON数据不需要任何特殊的 API 或工具包
例如,可以创建一个新的JavaScript变量,然后将 JSON 格式的数据字符串直接赋值给它
var people = { "people": [ { "firstName": "Brett", "lastName":"McLaughlin", "email": "brett@newInstance.com" }, { "firstName": "Jason", "lastName":"Hunter", "email": "jason@servlets.com" }, { "firstName": "Elliotte", "lastName":"Harold", "email": "elharo@macfaq.com" } ], "authors": [ { "firstName": "Isaac", "lastName": "Asimov", "genre": "science fiction" }, { "firstName": "Tad", "lastName": "Williams", "genre": "fantasy" }, { "firstName": "Frank", "lastName": "Peretti", "genre": "christian fiction" } ]}
访问数据
实际上,只需用点号表示法来表示数组元素。所以,要想访问 people 列表的第一个条目的姓氏,只需在 JavaScript 中使用下面这样的代码:
people.people[0].lastName;
利用这样的语法,可以处理任何 JSON 格式的数据
转换回字符串
String newJSONtext = people.toJSONString();
可以将任何 JavaScript 对象转换为 JSON 文本
JSON 数据类型
JSON 格式支持以下数据类型:
数字型
JavaScript 中的双精度浮点型格式,取决于实现。不能使用八进制和十六进制格式,在数字中不能使用 NaN 和 Infinity
下表展示了数字类型:
字符串型
零个或多个双引号包裹的 Unicode 字符以及反斜杠转义序列
字符就是只有一个字符的字符串,长度为 1
下表展示了字符串类型:
布尔型
包含 true 和 false 两个值
数组
它是一个有序的值集合,使用方括号闭合,这意味着数组以 [ 开始,以 ] 结尾,值使用 ,(逗号)分割,数组索引可以以 0 或 1 开始,当键名是连续的整数时应该使用数组
定义一维数组
var s1=new Array();s1=[1,2,3,4]或者s1[0]=1,s1[1]=2,s1[3]=3,s1[4]=4;alert(s1[0]);//结果为1;
定义二维数组
var s1=new Array();var s1=[[3,1],[2,3,4],3,[4,5,6,7,8]];alert(s1[1][0]);结果为2;
对象
它是一个无序的名/值对集合,对象使用大括号闭合,以 '{' 开始,以 '}' 结尾,每个名称后面都跟随一个 ':'(冒号),名/值对使用,(逗号)分割,键名必须是字符串并且不能同名,当键名是任意字符串时应该使用对象
创建简单的对象
JSON对象可以使用JavaScript创建。我们来看看使用 JavaScript 创建 JSON 对象的各种方式:
1.创建一个空对象:
var JSONObj = {};
2.创建一个新对象:
var JSONObj = new Object();
3.创建一个 bookname 属性值为字符串,price属性值为数字的对象。可以通过使用 '.' 运算符访问属性
var JSONObj = { "bookname ":"VB BLACK BOOK", "price":500 };
定义对象
var status_process = { "name5" : '闲置期', "name1" : '播种期', "name2" : '苗期', "name3" : '生长期', "name4" : '采收期' } alert(status_process);//结果为:Object:Object;
定义数组对象
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 = 0document.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>");}document.writeln("</tr></table>");
json二维对象
var status_process = { name5 : {name3:'空闲闲置期'}, name1 : '播种期', name2 : '苗期', name3 : '生长期', name4 : '采收期'};alert(status_process["name5"]["name3"]);alert(status_process.name5.name3);//结果都为:'空闲闲置期'
json对象的使用
var status_process = { name5 : '闲置期', name1 : '播种期', name2 : '苗期', name3 : '生长期', name4 : '采收期'};alert(status_process["name5"]);alert(status_process.name5);//两个都为:闲置期
json字符串
所谓json字符串,是指该字符串变量的值与json的格式相同,但是不是json对象
var s1="{";var s2 = " 'name5' : '闲置期', 'name1' : '播种期','name2' : '苗期','name3' : '生长期','name4' : '采收期'";var s3="}";var status_process=s1+s2 +s3;
虽然status_process的值符合json对象的格式,但是它不是对象,只是一个字符串(是拼凑出来的),将字符串转换为json对象使用函数eval,eval("(" + status_process+ ")")。
空格
可以在任意一对符号之间插入。可以添加用来让代码更可读
null
意味着空类型
var i = null;if(i==1) { document.write("<h1>value is 1</h1>"); } else { document.write("<h1>value is null</h1>");}
JSON 值
包括:数字(整型和浮点型)、字符串、布尔值、数组、对象、null
var i =1;var j = "sachin";var k = null;
- JSON全面总结(1)
- JSON全面总结(2)
- JSON总结(1)
- mysql 全面优化总结(1)
- JSON全面总结(3)之JSONObject和JSONArray区别及基本用法
- UML视频总结(全面)
- JAVA基础知识总结(全面)
- JSON 全面解析
- JSON全面讲解
- 【Android】Butterknife 8.5.1使用-全面总结
- Fragments(碎片)全面总结(—)
- Struts1.x 总结(很全面)
- Hadoop集群配置(最全面总结)
- Hadoop集群配置(最全面总结)
- Hadoop集群配置(最全面总结) .
- Hadoop集群配置(最全面总结)
- Android中的Service全面总结(转载)
- Hadoop集群配置(最全面总结) . .
- OCR 总结
- iOS 11获取设备名称 Swift 超简单
- List去重
- 单链表---实现约瑟夫环的问题
- android之存储篇_SQLite数据库_让你彻底学会SQLite的使用
- JSON全面总结(1)
- spring中xml文件解析说明及NamespaceHandler接口应用
- 4.3 HTTP 连接的处理
- Leetcode-55. Jump Game
- 转载:变种神经网络的典型代表:深度残差网络
- Keras 2.x和1.x的区别
- Vigenère 密码
- projector和消融shader的使用
- 邻接矩阵