JSON相关知识汇总


Posted in Javascript onJuly 03, 2015

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中数组字面量形式
扩展:

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

[
  {
    "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);   //string
var 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);     // lily
alert(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

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

Javascript 相关文章推荐
Javascript 面向对象(二)封装代码
May 23 Javascript
JS操作select下拉框动态变动(创建/删除/获取)
Jun 02 Javascript
JQuery 控制内容长度超出规定长度显示省略号
May 23 Javascript
jquery不常用方法汇总
Jul 26 Javascript
JavaScript编写检测用户所使用的浏览器的代码示例
May 05 Javascript
JavaScript判断页面加载完之后再执行预定函数的技巧
May 17 Javascript
JavaScript中 ES6 generator数据类型详解
Aug 11 Javascript
js的OOP继承实现(必看篇)
Feb 18 Javascript
详解Angular之constructor和ngOnInit差异及适用场景
Jun 22 Javascript
vue-awesome-swiper滑块插件使用方法详解
Nov 27 Javascript
json 带斜杠时如何解析的实现
Aug 12 Javascript
Node对CommonJS的模块规范
Nov 06 Javascript
javascript表格的渲染组件
Jul 03 #Javascript
解决jquery实现的radio重新选中的问题
Jul 03 #Javascript
移动端JQ插件hammer使用详解
Jul 03 #Javascript
jQuery+AJAX实现无刷新下拉加载更多
Jul 03 #Javascript
Javascript实现字数统计
Jul 03 #Javascript
JavaScript获取表格(table)当前行的值、删除行、增加行
Jul 03 #Javascript
jQuery中 delegate使用的问题
Jul 03 #Javascript
You might like
PHP 存储文本换行实现方法
2010/01/05 PHP
php自动给文章加关键词链接的函数代码
2012/11/29 PHP
php文件上传的例子及参数详解
2013/12/12 PHP
php安装扩展mysqli的实现步骤及报错解决办法
2017/09/23 PHP
一段实时更新的时间代码
2006/07/07 Javascript
javascript(js)的小数点乘法除法问题详解
2014/03/07 Javascript
jquery 扑捉回车键事件代码
2014/04/24 Javascript
jQuery修改li下的样式以及li下的img的src的值的方法
2014/11/02 Javascript
javascript实现倒计时N秒后网页自动跳转代码
2014/12/11 Javascript
node.js中的fs.renameSync方法使用说明
2014/12/16 Javascript
Javascript的比较汇总
2016/07/25 Javascript
微信小程序开发之入门实例教程篇
2017/03/07 Javascript
Vue2.0组件间数据传递示例
2017/03/07 Javascript
JS实现可针对算术表达式求值的计算器功能示例
2018/09/04 Javascript
详解React 服务端渲染方案完美的解决方案
2018/12/14 Javascript
vuex实现的简单购物车功能示例
2019/02/13 Javascript
python实现查找两个字符串中相同字符并输出的方法
2015/07/11 Python
python实现搜索本地文件信息写入文件的方法
2016/02/22 Python
Python之web模板应用
2017/12/26 Python
python如何实现int函数的方法示例
2018/02/19 Python
python opencv 直方图反向投影的方法
2018/02/24 Python
Python实现抓取HTML网页并以PDF文件形式保存的方法
2018/05/08 Python
django解决订单并发问题【推荐】
2019/07/31 Python
Python如何使用27行代码绘制星星图
2020/07/20 Python
python 获取剪切板内容的两种方法
2020/11/28 Python
家得宝官网:The Home Depot(全球最大的家居装饰专业零售商)
2018/12/17 全球购物
请编写一个 C 函数,该函数在给定的内存区域搜索给定的字符,并返回该字符所在位置索引值
2014/09/15 面试题
水务局局长岗位职责
2013/11/28 职场文书
应届毕业生简历自我评价
2014/01/31 职场文书
儿园租房协议书范本
2014/12/02 职场文书
挂职锻炼个人总结
2015/03/05 职场文书
2015年电工工作总结
2015/04/10 职场文书
小学六年级班主任工作经验交流材料
2015/11/02 职场文书
初一英语教学反思
2016/02/15 职场文书
解决numpy和torch数据类型转化的问题
2021/05/23 Python
CSS 实现Chrome标签栏的技巧
2021/08/04 HTML / CSS