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中的float运算精度实例分析
Aug 21 Javascript
jquery ajax实现下拉框三级无刷新联动,且保存保持选中值状态
Oct 29 Javascript
使用JSON.parse将json字符串转换成json对象的时候会出错
Sep 04 Javascript
jQuery平滑旋转幻灯片特效代码分享
Sep 07 Javascript
js判断一个字符串是以某个字符串开头的简单实例
Dec 27 Javascript
JS基于正则实现数字千分位用逗号分隔的方法
Jun 16 Javascript
jQuery自定义多选下拉框效果
Jun 19 jQuery
JavaScript 异步调用
Oct 25 Javascript
浅谈使用mpvue开发小程序需要注意和了解的知识点
May 23 Javascript
JS实现字符串翻转的方法分析
Aug 31 Javascript
详解mpvue小程序中怎么引入iconfont字体图标
Oct 01 Javascript
原生JS与CSS实现软件卸载对话框功能
Dec 05 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
DedeCMS 核心类TypeLink.class.php摘要笔记
2010/04/07 PHP
PHP获取文件后缀名的三个函数
2012/10/15 PHP
php include和require的区别深入解析
2013/06/17 PHP
PHP curl伪造IP地址和header信息代码实例
2015/04/27 PHP
Yii2中Restful API原理实例分析
2016/07/25 PHP
ecshop适应在PHP7的修改方法解决报错的实现
2016/11/01 PHP
PHP编程实现csv文件导入mysql数据库的方法
2017/04/29 PHP
strpos() 函数判断字符串中是否包含某字符串的方法
2019/01/16 PHP
php解决crontab定时任务不能写入文件问题的方法分析
2019/09/16 PHP
JQUERY1.6 使用方法四 检测浏览器
2011/11/23 Javascript
js导出格式化的excel 实例方法
2013/07/17 Javascript
JavaScript中的标签语句用法分析
2015/02/10 Javascript
jQuery实现将页面上HTML标签换成另外标签的方法
2015/06/09 Javascript
初探nodeJS
2017/01/24 NodeJs
canvas绘图不清晰的解决方案
2017/02/28 Javascript
webpack打包node.js后端项目的方法
2018/03/10 Javascript
JavaScript实现区块链
2018/03/14 Javascript
JS实现Cookie读、写、删除操作工具类示例
2018/08/28 Javascript
layui问题之渲染数据表格时,仅出现10条数据的解决方法
2019/09/12 Javascript
javascript实现时间日期的格式化的方法汇总
2020/08/06 Javascript
如何搭建一个完整的Vue3.0+ts的项目步骤
2020/10/18 Javascript
微信小程序实现通讯录列表展开收起
2020/11/18 Javascript
python实现证件照换底功能
2019/08/20 Python
通过cmd进入python的步骤
2020/06/16 Python
英国领先的运动物理治疗供应公司:Vivomed
2018/07/14 全球购物
澳大利亚玩具剧场:Toy Playhouse
2019/03/03 全球购物
SQL Server提供的3种恢复模型都是什么? 有什么区别?
2012/05/13 面试题
Weblogic和WebSphere不同特点
2012/05/09 面试题
业务经理的岗位职责
2013/11/16 职场文书
学校十一活动方案
2014/02/01 职场文书
临床医学专业求职信
2014/08/08 职场文书
清明节寄语2015
2015/03/23 职场文书
销售督导岗位职责
2015/04/10 职场文书
学校艾滋病宣传活动总结
2015/05/09 职场文书
MySQL时间设置注意事项的深入总结
2021/05/06 MySQL
win11开机发生死循环重启怎么办?win11开机发生死循环重启解决方法
2022/08/05 数码科技