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 SELECT单选模拟jQuery.select.js
Nov 12 Javascript
Jquery+JSon 无刷新分页实现代码
Apr 01 Javascript
读jQuery之十 事件模块概述
Jun 27 Javascript
js实现简单登录功能的实例代码
Nov 09 Javascript
JQuery对表单元素的基本操作使用总结
Jul 18 Javascript
AngularJS表单编辑提交功能实例
Feb 13 Javascript
基于Bootstrap使用jQuery实现简单可编辑表格
May 04 Javascript
微信小程序 wx.request(接口调用方式)详解及实例
Nov 23 Javascript
js实现省市级联效果分享
Aug 10 Javascript
老生常谈javascript的面向对象思想
Aug 22 Javascript
VSCode配置react开发环境的步骤
Dec 27 Javascript
JS实现倒序输出的几种常用方法示例
Apr 13 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
Joomla下利用configuration.php存储简单数据
2010/05/19 PHP
解析阿里云ubuntu12.04环境下配置Apache+PHP+PHPmyadmin+MYsql
2013/06/26 PHP
PHP对象链式操作实现原理分析
2016/10/09 PHP
最简单的js图片切换效果实现代码
2011/09/24 Javascript
解析John Resig Simple JavaScript Inheritance代码
2012/12/03 Javascript
jquery解析xml字符串简单示例
2014/04/11 Javascript
js使用removeChild方法动态删除div元素
2014/08/01 Javascript
详解Vue.js动态绑定class
2016/12/20 Javascript
jQuery实现CheckBox全选、全不选功能
2017/01/11 Javascript
JS基于正则截取替换特定字符之间字符串操作示例
2017/02/03 Javascript
深入浅析js原型链和vue构造函数
2018/10/25 Javascript
微信小程序实现选项卡效果
2018/11/06 Javascript
解决vue cli使用typescript后打包巨慢的问题
2019/09/30 Javascript
JS中==、===你分清楚了吗
2020/03/04 Javascript
Python中实现对list做减法操作介绍
2015/01/09 Python
python中split方法用法分析
2015/04/17 Python
python实现对excel进行数据剔除操作实例
2017/12/07 Python
python按顺序重命名文件并分类转移到各个文件夹中的实现代码
2020/07/21 Python
Django配置Bootstrap, js实现过程详解
2020/10/13 Python
Python实现壁纸下载与轮换
2020/10/19 Python
Python中的流程控制详解
2021/02/18 Python
美国香薰蜡烛品牌:PADDYWAX
2018/10/06 全球购物
科颜氏法国官网:Kiehl’s法国
2019/08/20 全球购物
什么是唯一索引
2015/07/05 面试题
武汉东之林科技有限公司机试
2013/09/17 面试题
计算机专业毕业生求职信分享
2013/12/24 职场文书
超市开店计划书
2014/09/15 职场文书
企业务虚会发言材料
2014/10/20 职场文书
推广普通话的宣传语
2015/07/13 职场文书
2015年小学体育教师工作总结
2015/10/23 职场文书
2019学子的答谢词范本!
2019/07/05 职场文书
蔬果开业典礼发言稿应该怎么写?
2019/09/03 职场文书
经典哲理警句:志不真则心不热,心不热则功不贤
2019/11/14 职场文书
详解MySQL多版本并发控制机制(MVCC)源码
2021/06/23 MySQL
python创建字典及相关管理操作
2022/04/13 Python
JavaScript parseInt0.0000005打印5原理解析
2022/07/23 Javascript