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实现维吉尼亚(Vigenere)密码算法实例
Nov 22 Javascript
javascript原型模式用法实例详解
Jun 04 Javascript
通过XMLHttpRequest和jQuery实现ajax的几种方式
Aug 28 Javascript
javaScript事件机制兼容【详细整理】
Jul 23 Javascript
微信小程序本地缓存数据增删改查实例详解
May 24 Javascript
JavaScript 通过Ajax 动态加载CheckBox复选框
Aug 31 Javascript
使用express+multer实现node中的图片上传功能
Feb 02 Javascript
Vue验证码60秒倒计时功能简单实例代码
Jun 22 Javascript
基于Vue2-Calendar改进的日历组件(含中文使用说明)
Apr 14 Javascript
vue store之状态管理模式的详细介绍
Jun 13 Javascript
jQuery位置选择器用法实例分析
Jun 28 jQuery
JavaScript 中判断变量是否为数字的示例代码
Oct 22 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
千呼万唤始出来,DOTA2勇士令状不朽宝藏Ⅱ现已推出
2020/08/25 DOTA
一个图形显示IP的PHP程序代码
2007/10/19 PHP
PHP 一个比较完善的简单文件上传
2010/03/25 PHP
利用中国天气预报接口实现简单天气预报
2014/01/20 PHP
Laravel中服务提供者和门面模式的入门介绍
2017/11/06 PHP
php 中phar包的使用教程详解
2018/10/26 PHP
Laravel框架实现即点即改功能的方法分析
2019/10/31 PHP
用Javascript同时提交多个Web表单的方法
2009/12/26 Javascript
jQuery插件MixItUp实现动画过滤和排序
2015/04/12 Javascript
js实现touch移动触屏滑动事件
2015/04/17 Javascript
javascript控制层显示或隐藏的方法
2015/07/22 Javascript
基于javascript简单实现对身份证校验
2021/01/25 Javascript
浅析jquery与checkbox的checked属性的问题
2016/04/27 Javascript
jQuery插件fullPage.js实现全屏滚动效果
2016/12/02 Javascript
原生javascript上传图片带进度条【实例分享】
2017/04/06 Javascript
利用Vue.js实现求职在线之职位查询功能
2017/07/03 Javascript
axios异步提交表单数据的几种方法
2019/08/11 Javascript
vue-dplayer 视频播放器实例代码
2019/11/08 Javascript
angular异步验证防抖踩坑实录
2019/12/01 Javascript
Python用GET方法上传文件
2015/03/10 Python
Python实现可获取网易页面所有文本信息的网易网络爬虫功能示例
2018/01/15 Python
Python3导入自定义模块的三种方法详解
2018/04/13 Python
Python3实现的简单验证码识别功能示例
2018/05/02 Python
Kears+Opencv实现简单人脸识别
2019/08/28 Python
Jupyter notebook 启动闪退问题的解决
2020/04/13 Python
解析Tensorflow之MNIST的使用
2020/06/30 Python
详解Python直接赋值,深拷贝和浅拷贝
2020/07/09 Python
Python DataFrame使用drop_duplicates()函数去重(保留重复值,取重复值)
2020/07/20 Python
美国的Eastbay旗下的运动款子品牌:Final-Score
2018/01/01 全球购物
房地产销售大学生自我评价分享
2013/11/11 职场文书
小学门卫岗位职责
2013/12/17 职场文书
美容院营销方案
2014/03/05 职场文书
工作会议方案
2014/05/21 职场文书
三年级作文之小小梦想
2019/12/06 职场文书
python中opencv实现图片文本倾斜校正
2021/06/11 Python
vue实现在data里引入相对路径
2022/06/05 Vue.js