JSON 基础知识总结

王朝学院·作者佚名  2016-05-22
窄屏简体版  字體: 小  |  中  |  大  |  超大  

JSON 基础知识总结 2015-07-02 15:38 by 半梦半醒。, ... 阅读, ... 评论, 收藏, 编辑 JSON:javaScript 对象表示法(Javascript Object Notation)JSON 语法规则数据在名称/值对中数据由逗号分隔花括号保存对象方括号保存数组

JSON有6种类型的值:对象、数组、字符串、数字、布尔值、null

JSON对象是一个容纳“名/值”对的无序集合名字:任意字符串值:任意类型的JSON值,包括数组和对象(对象中可以嵌入对象)注:JSON字符串必须使用双引号(单引号会报错)

一、对象javascript中创建字面量:

var object = { name:"lily", age:22};

或者:

var object = { "name":"lily", "age":22};

JSON:

{ "name":"lily", "age":22}

二、数组

JSON数组采用的是javascript中数组字面量形式

例如,JSON中 :

[ "lily",25,"docter"]

同样要注意, JSON 数组也没有变量和分号。把数组和对象结合起来,可以构成更复杂的数据集合。

扩展:把数组和对象结合起来可以构成更复杂的数据结合例如:

[ { "name":"lily", "age":22, "job":"docter" }, { "name":"nicy", "age":21, "job":"teacher" }, { "name":"lily", "age":22, "job":"AE" }]

三、解析与序列化JSON拥有和javascript类似的语法,可以把JSON数据结构解析为有用的javascript对象1.JSON对象

收发JSON数据读取、写入、发送和接收JSON数据对象时,需要转换成字符串,并能从字符串转换为JSON数据对象。(用于javascript相同的方式读写他们)

JSON对象有两个方法:① stringify(): 把javascript对象序列化为JSON字符串② parse(): 把JSON字符串解析为原生的javascript值

实例:

var book = { title:"PRofessional JavaScript", authors:[ "lily" ], edition:3, year:2011};var jsonText = JSON.stringify(book);alert(jsonText); //{"title":"professional JavaScript","authors":["lily"],"edition":3,"year":2011}alert(typeof jsonText); //stringvar bookCopy = JSON.parse(jsonText);alert(typeof bookCopy); //object

这个例子中使用JSON.stringify()把一个javascript对象book序列化为一个JSON字符串,然后保存到jsonText中;将JSON字符串jsonText直接传给JSON.parse()就得到了相应的javascript值

注:序列化javascript对象时,最终值都是有效JSON数据类型的实例属性,任何无效的值都会被跳过

2.序列化选项 JSON.stringify()在序列化javascript对象时,可以接收两个参数 参数一:过滤器,可以是一个数组或函数 参数二:一个选项,表示是否在JSON字符串中保留缩进 1)过滤结果 如果过滤器的参数是数组,那么JSON.stringify()的结果中只包含数组中列出的属性 例如:

var book = { "title":"professional JavaScript", "authors":[ "lily" ], edition:3, year:2011};var jsonText = JSON.stringify(book,["title","edition"]);alert(jsonText); //{"title":"professional JavaScript","edition":3}alert(typeof jsonText); // string

2)字符串缩进:JSON.stringify()方法的第三个参数用于控制结果中的缩进和空白符3)toJSON()方法给对象定义toJSON()方法,可以返回其自身的JSON数据格式

四、JSON访问值

第一种:简单数组['item1','item2','item3']取值:通过数字索引访问嵌入的值(第一项的索引为0)

['item1','item2','item3']var items = ['item1','item2','item3'];alert(items[0]); // item1

第二种:使用{}表示对象{ "key":"value" }取值:通过键名访问嵌入的值

var oExample = { "name":"lily" };alert(oExample.name); // lilyalert(oExample["name"]); // lily

使用这两种方式,可以用子记录(带命名的或数值的索引键)描述很多数据结构:

例如:

var oNovelist = { "firstName":"lily", "lastName":"russ", "novels": [ { "title":"and choas died", "year":"1970" }, { "title":"the famale man", "year":"1976" } ]};var msg = oNovelist.firstName+" "+oNovelist.lastName+"'s"+" "+oNovelist.novels[0].title+" "+"was published in"+oNovelist.novels[0].year;alert(msg); // lily russ's and choas died was published in1970

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航