首页 > 语言 > JavaScript > 正文

JSON相关知识汇总

2024-05-06 16:22:36
字体:
来源:转载
供稿:网友

本文给大家汇总了一下关于json的相关的知识点,从基础到示例,非常全面,有需要的小伙伴可以参考下。

JSON:JavaScript 对象表示法(JavaScript Object Notation)

JSON 语法规则

数据在名称/值对中

数据由逗号分隔

花括号保存对象

方括号保存数组

JSON有6种类型的值:

对象、数组、字符串、数字、布尔值、null

JSON对象是一个容纳“名/值”对的无序集合

名字:任意字符串

值:任意类型的JSON值,包括数组和对象(对象中可以嵌入对象)

注:JSON字符串必须使用双引号(单引号会报错)

一、对象

javascript中创建字面量:

 

  1. var object = { 
  2. name:"lily"
  3. age:22 
  4. }; 

或者:

 

 
  1. var object = { 
  2. "name":"lily"
  3. "age":22 
  4. };  

JSON:

 

 
  1. "name":"lily"
  2. "age":22 
  3. }  

二、数组

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

扩展:

把数组和对象结合起来可以构成更复杂的数据结合

例如:

 

 
  1. "name":"lily"
  2. "age":22, 
  3. "job":"docter" 
  4. }, 
  5. "name":"nicy"
  6. "age":21, 
  7. "job":"teacher" 
  8. }, 
  9. "name":"lily"
  10. "age":22, 
  11. "job":"AE" 
  12. ]   

三、解析与序列化

JSON拥有和javascript类似的语法,可以把JSON数据结构解析为有用的javascript对象

1.JSON对象

收发JSON数据

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

JSON对象有两个方法:

① stringify(): 把javascript对象序列化为JSON字符串

② parse(): 把JSON字符串解析为原生的javascript值

实例:

 

 
  1. var book = { 
  2. title:"professional JavaScript"
  3. authors:[ 
  4. "lily" 
  5. ], 
  6. edition:3, 
  7. year:2011 
  8. }; 
  9. var jsonText = JSON.stringify(book); 
  10. alert(jsonText); //{"title":"professional JavaScript","authors":["lily"],"edition":3,"year":2011} 
  11. alert(typeof jsonText); //string 
  12. var bookCopy = JSON.parse(jsonText); 
  13. 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()的结果中只包含数组中列出的属性

例如:

 

 
  1. var book = { 
  2. "title":"professional JavaScript"
  3. "authors":[ 
  4. "lily" 
  5. ], 
  6. edition:3, 
  7. year:2011 
  8. };  
  9. var jsonText = JSON.stringify(book,["title","edition"]); 
  10. alert(jsonText); //{"title":"professional JavaScript","edition":3} 
  11. 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); // lily

alert(oExample["name"]); // lily

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

例如:

 

 
  1. var oNovelist = { 
  2. "firstName":"lily"
  3. "lastName":"russ"
  4. "novels"
  5. "title":"and choas died"
  6. "year":"1970" 
  7. }, 
  8. "title":"the famale man"
  9. "year":"1976" 
  10. };  
  11. var msg = oNovelist.firstName+" "+oNovelist.lastName+"'s"+" "+oNovelist.novels[0].title+" "+"was published in"+oNovelist.novels[0].year; 
  12. alert(msg); // lily russ's and choas died was published in1970  

以上所述就是本文的全部内容了,希望大家能够喜欢。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选