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 相关文章推荐
利用js判断浏览器类型(是否为IE,Firefox,Opera浏览器)
Nov 22 Javascript
常用jQuery代码分享
Jul 14 Javascript
jQuery+CSS3折叠卡片式下拉列表框实现效果
Nov 02 Javascript
学习JavaScript设计模式之装饰者模式
Jan 19 Javascript
微信小程序 基础知识css样式media标签
Feb 15 Javascript
正则验证小数点后面只能有两位数的方法
Feb 28 Javascript
JavaScript实现带有子菜单和控件的slider轮播图效果
Nov 01 Javascript
解决layui页面按钮点击无反应,也不报错的问题
Sep 29 Javascript
Vue Cli3 打包配置并自动忽略console.log语句的方法
Apr 23 Javascript
js代码实现轮播图
May 04 Javascript
jQuery开发仿QQ版音乐播放器
Jul 10 jQuery
JS highcharts动态柱状图原理及实现
Oct 16 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类中Static方法效率测试代码
2010/10/17 PHP
微信公众平台之快递查询功能用法实例
2015/04/14 PHP
小议Function.apply()之二------利用Apply的参数数组化来提高 JavaScript程序性能
2006/11/30 Javascript
JS Excel读取和写入操作(模板操作)实现代码
2010/04/11 Javascript
有关于JS构造函数的重载和工厂方法
2013/04/07 Javascript
jQuery使用技巧简单汇总
2013/04/18 Javascript
jquery click([data],fn)使用方法实例介绍
2013/07/08 Javascript
jQuery Validate 验证,校验规则写在控件中的具体实例
2014/02/27 Javascript
JQuery1.8 判断元素是否绑定事件的方法
2014/07/10 Javascript
JavaScript 学习笔记之变量及其作用域
2015/01/14 Javascript
jquery滚动特效集锦
2015/06/03 Javascript
js实现大转盘抽奖游戏实例
2015/06/24 Javascript
ionic2 tabs使用 Modal底部tab弹出框
2016/12/30 Javascript
react开发中如何使用require.ensure加载es6风格的组件
2017/05/09 Javascript
原生JS上传大文件显示进度条 php上传文件代码
2020/03/27 Javascript
JS中touchstart事件与click事件冲突的解决方法
2018/03/12 Javascript
Javascript的console['']常用输入方法汇总
2018/04/26 Javascript
详解如何提升JSON.stringify()的性能
2019/06/12 Javascript
Python基础篇之初识Python必看攻略
2016/06/23 Python
python实现读取并显示图片的两种方法
2017/01/13 Python
Python 切分数组实例解析
2019/11/07 Python
python paramiko远程服务器终端操作过程解析
2019/12/14 Python
基于python实现音乐播放器代码实例
2020/07/01 Python
如何基于python把文字图片写入word文档
2020/07/31 Python
CSS3之边框多颜色Border-color属性使用示例
2013/10/11 HTML / CSS
财务管理专业求职信
2014/06/11 职场文书
小区的门卫岗位职责
2014/10/01 职场文书
因身体原因离职的辞职信范文
2015/05/12 职场文书
.Net Core导入千万级数据至Mysql的步骤
2021/05/24 MySQL
如何判断pytorch是否支持GPU加速
2021/06/01 Python
分享一些Java的常用工具
2021/06/11 Java/Android
使用JS实现简易计算器
2021/06/14 Javascript
css实现左上角飘带效果的完整代码
2022/03/18 HTML / CSS
HTML常用标签超详细整理
2022/03/19 HTML / CSS
python中pycryto实现数据加密
2022/04/29 Python
Redis配置外网可访问(redis远程连接不上)的方法
2022/12/24 Redis