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 相关文章推荐
代码生成器 document.write()
Apr 15 Javascript
javascript hashtable 修正版 下载
Dec 30 Javascript
js中设置元素class的三种方法小结
Aug 28 Javascript
简单的js图片轮换代码(js图片轮播)
May 06 Javascript
基于JavaScript实现屏幕滚动效果
Jan 18 Javascript
Angular4.0中引入laydate.js日期插件的方法教程
Dec 25 Javascript
vue watch自动检测数据变化实时渲染的方法
Jan 16 Javascript
微信小程序实现弹出菜单功能
Jun 12 Javascript
layer关闭当前窗口页面以及确认取消按钮的方法
Sep 09 Javascript
微信小程序实现蓝牙打印
Sep 23 Javascript
javascript 模块依赖管理的本质深入详解
Apr 30 Javascript
纯js+css实现在线时钟
Aug 18 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
咖啡的传说和历史
2021/03/03 新手入门
PHP中文分词的简单实现代码分享
2011/07/17 PHP
PHP使用Alexa API获取网站的Alexa排名例子
2014/06/12 PHP
ThinkPHP写数组插入与获取最新插入数据ID实例
2014/11/03 PHP
PHP文字转图片功能原理与实现方法分析
2017/08/31 PHP
什么是JavaScript
2009/08/13 Javascript
在Windows上安装Node.js模块的方法
2011/09/25 Javascript
jQuery 开发者应该注意的9个错误
2012/05/03 Javascript
JavaScript实现网页图片等比例缩放实现代码及调用方式
2013/02/25 Javascript
你必须知道的JavaScript 中字符串连接的性能的一些问题
2013/05/07 Javascript
在javaScript中关于submit和button的区别介绍
2013/10/20 Javascript
jQuery的each终止或跳过示例代码
2013/12/12 Javascript
JavaScript设计模式之策略模式实例
2014/10/10 Javascript
jQuery移动web开发之页面跳转和加载外部页面的实现
2015/12/04 Javascript
原生javascript实现匀速运动动画效果
2016/02/26 Javascript
实例讲解jQuery中对事件的命名空间的运用
2016/05/24 Javascript
纯js实现手风琴效果代码
2020/04/17 Javascript
JavaScript实现星级评分
2017/01/12 Javascript
JS实现禁止用户使用Ctrl+鼠标滚轮缩放网页的方法
2017/04/28 Javascript
Angularjs2不同组件间的通信实例代码
2017/05/06 Javascript
Javascript中的getter和setter初识
2017/08/17 Javascript
JavaScript canvas实现围绕旋转动画
2017/11/18 Javascript
jQuery Datatables表头不对齐的解决办法
2017/11/27 jQuery
浅谈vue项目重构技术要点和总结
2018/01/23 Javascript
微信小程序地图导航功能实现完整源代码附效果图(推荐)
2019/04/28 Javascript
微信小程序静默登录的实现代码
2020/01/08 Javascript
Python使用win32com实现的模拟浏览器功能示例
2017/07/13 Python
Python3多线程爬虫实例讲解代码
2018/01/05 Python
python实现弹窗祝福效果
2019/04/07 Python
tensorflow2.0的函数签名与图结构(推荐)
2020/04/28 Python
发现两个有趣的CSS3动画效果
2013/08/14 HTML / CSS
The Hut美国/加拿大:英国领先的豪华在线百货商店
2019/03/26 全球购物
会计专业毕业生自荐信范文
2013/12/20 职场文书
公司面试感谢信
2014/02/01 职场文书
读书演讲主持词
2014/03/18 职场文书
PHP策略模式写法
2021/04/01 PHP