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重要知识更新
Jul 08 Javascript
JS获取整个页面文档的实现代码
Dec 15 Javascript
JS截取字符串常用方法整理及使用示例
Oct 18 Javascript
setTimeout自动触发一个js的方法
Jan 15 Javascript
js如何判断用户是在PC端和还是移动端访问
Apr 24 Javascript
ajax提交表单实现网页无刷新注册示例
May 08 Javascript
将JavaScript的jQuery库中表单转化为JSON对象的方法
Nov 17 Javascript
详解JavaScript对象类型
Jun 16 Javascript
AngularJs 指令详解及示例代码
Sep 01 Javascript
Vue2.0组件间数据传递示例
Mar 07 Javascript
详解iframe跨域的几种常用方法(小结)
Apr 29 Javascript
jQuery操作attr、prop、val()/text()/html()、class属性
May 23 jQuery
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中file_exists使用中遇到的问题小结
2016/04/05 PHP
zend framework重定向方法小结
2016/05/28 PHP
php模拟post上传图片实现代码
2016/06/24 PHP
基于Swoole实现PHP与websocket聊天室
2016/08/03 PHP
Yii2基于Ajax自动获取表单数据的方法
2016/08/10 PHP
php修改数组键名的方法示例
2017/04/15 PHP
基于jquery的文章中所有图片width大小批量设置方法
2013/08/01 Javascript
浅析JavaScript中的delete运算符
2013/11/30 Javascript
js验证输入是否为手机号码或电话号码示例
2013/12/30 Javascript
jQuery操作cookie
2016/08/08 Javascript
js模式化窗口问题![window.dialogArguments]
2016/10/30 Javascript
关于使用axios的一些心得技巧分享
2017/07/02 Javascript
web前端页面生成exe可执行文件的方法
2018/02/08 Javascript
Vue.js做select下拉列表的实例(ul-li标签仿select标签)
2018/03/02 Javascript
axios简单实现小程序延时loading指示
2018/07/30 Javascript
JS中的两种数据类型及实现引用类型的深拷贝的方法
2018/08/12 Javascript
jQuery实现鼠标移入移出事件切换功能示例
2018/09/06 jQuery
JavaScript setInterval()与setTimeout()计时器
2019/12/27 Javascript
浅谈Vue 函数式组件的使用技巧
2020/06/16 Javascript
python3模拟百度登录并实现百度贴吧签到示例分享(百度贴吧自动签到)
2014/02/24 Python
Python 3 判断2个字典相同
2019/08/06 Python
Python3直接爬取图片URL并保存示例
2019/12/18 Python
解决python replace函数替换无效问题
2020/01/18 Python
详解Python调用系统命令的六种方法
2021/01/28 Python
bonprix匈牙利:女士、男士和儿童服装
2019/07/19 全球购物
简述Linux文件系统通过i节点把文件的逻辑结构和物理结构转换的工作过程
2016/01/06 面试题
团支书的期末学习总结自我评价
2013/11/01 职场文书
简短的公司员工自我评价分享
2013/11/13 职场文书
车贷收入证明范本
2014/01/09 职场文书
商场中秋节广播稿
2014/01/17 职场文书
安全伴我行演讲稿
2014/09/04 职场文书
2014年教师节红领巾广播稿
2014/09/10 职场文书
工程项目经理岗位职责
2015/02/02 职场文书
高考1977观后感
2015/06/04 职场文书
小学二年级语文教学反思
2016/03/03 职场文书
深入理解MySQL中MVCC与BufferPool缓存机制
2022/05/25 MySQL