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 相关文章推荐
jquery+json 通用三级联动下拉列表
Apr 19 Javascript
JavaScript为对象原型prototype添加属性的两种方式
Aug 01 Javascript
IE 下Enter提交表单存在重复提交问题的解决方法
May 04 Javascript
JavaScript中number转换成string介绍
Dec 31 Javascript
浅析Bootstrip的select控件绑定数据的问题
May 10 Javascript
Javascript中将变量转换为字符串的三种方法
Sep 19 Javascript
JavaScript html5 canvas实现图片上画超链接
Oct 20 Javascript
使用Vue开发一个实时性时间转换指令
Jan 17 Javascript
使用express搭建一个简单的查询服务器的方法
Feb 09 Javascript
clipboard在vue中的使用的方法示例
Oct 19 Javascript
微信小程序实现注册登录功能(表单校验、错误提示)
Dec 10 Javascript
修改NPM全局模式的默认安装路径的方法
Dec 15 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数组函数序列之in_array() 查找数组值是否存在
2011/10/29 PHP
php可应用于面包屑导航的迭代寻找家谱树实现方法
2015/02/02 PHP
WordPress的文章自动添加关键词及关键词的SEO优化
2016/03/01 PHP
ThinkPHP框架实现的MySQL数据库备份功能示例
2018/05/24 PHP
再谈IE中Flash控件的自动激活 ObjectWrap
2007/03/09 Javascript
网上抓的一个特效
2007/05/11 Javascript
用javascript实现的支持lrc歌词的播放器
2007/05/17 Javascript
ExtJS Ext.MessageBox.alert()弹出对话框详解
2010/04/02 Javascript
jquery 操作日期、星期、元素的追加的实现代码
2012/02/07 Javascript
JavaScript定时器详解及实例
2013/08/01 Javascript
JS获取键盘上任意按键的值(实例代码)
2013/11/12 Javascript
jQuery+CSS3实现树叶飘落特效
2015/02/01 Javascript
原生js实现模拟滚动条
2015/06/15 Javascript
程序员必知35个jQuery 代码片段
2015/11/05 Javascript
如何解决ligerUI布局时Center中的Tab高度大小
2015/11/24 Javascript
php中and 和 &&出坑指南
2018/07/13 Javascript
vue首次赋值不触发watch的解决方法
2018/09/11 Javascript
详解@Vue/Cli 3 Invalid Host header 错误解决办法
2019/01/02 Javascript
Js逆向实现滑动验证码图片还原的示例代码
2020/03/10 Javascript
vue组件中节流函数的失效的原因和解决方法
2020/12/02 Vue.js
[01:05:32]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#1COL VS Alliance第一局
2016/03/04 DOTA
在Python中操作字典之setdefault()方法的使用
2015/05/21 Python
Python实现PS滤镜碎片特效功能示例
2018/01/24 Python
对numpy.append()里的axis的用法详解
2018/06/28 Python
解决webdriver.Chrome()报错:Message:'chromedriver' executable needs to be in Path
2019/06/12 Python
python自动识别文本编码格式代码
2019/12/26 Python
聊聊python中的循环遍历
2020/09/07 Python
python如何使用腾讯云发送短信
2020/09/17 Python
《飞向蓝天的恐龙》教学反思
2014/04/09 职场文书
副总经理任命书
2014/06/05 职场文书
群众路线教育实践活动思想汇报(2014特荐篇)
2014/09/16 职场文书
护士长2014年度工作总结
2014/11/11 职场文书
学校运动会加油词
2015/07/18 职场文书
2016年第29个世界无烟日宣传活动总结
2016/04/06 职场文书
MySQL Shell import_table数据导入的实现
2021/08/07 MySQL
MySQL分区表实现按月份归类
2021/11/01 MySQL