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 Mobile不显示讨厌loading界面的方法
Feb 19 Javascript
node.js中的fs.exists方法使用说明
Dec 17 Javascript
javascript定义变量时带var与不带var的区别分析
Jan 12 Javascript
浅谈Javascript中的Function与Object
Jan 26 Javascript
JavaScript中利用各种循环进行遍历的方式总结
Nov 10 Javascript
jQuery ajax分页插件实例代码
Jan 27 Javascript
使用vue实现点击按钮滑出面板的实现代码
Jan 10 Javascript
jQuery实现获取h1-h6标题元素值的方法
Mar 06 Javascript
基于jQuery实现的Ajax 验证用户名唯一性实例代码
Jun 28 jQuery
几个你不知道的技巧助你写出更优雅的vue.js代码
Jun 11 Javascript
js实现按钮开关单机下拉菜单效果
Nov 22 Javascript
element tree树形组件回显数据问题解决
Aug 14 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
用来解析.htgroup文件的PHP类
2012/09/05 PHP
YII路径的用法总结
2014/07/09 PHP
PHP+redis实现微博的拉模型案例详解
2019/07/10 PHP
关于Yii2框架跑脚本时内存泄漏问题的分析与解决
2019/12/01 PHP
js实现addClass,removeClass,hasClass的函数代码
2011/07/13 Javascript
jQuery获取浏览器中的分辨率实现代码
2013/04/23 Javascript
给ListBox添加双击事件示例代码
2013/12/02 Javascript
控制台报错object is not a function的解决方法
2014/08/24 Javascript
jQuery表单美化插件jqTransform使用详解
2015/04/12 Javascript
JavaScript实现把数字转换成中文
2015/06/29 Javascript
深入理解js promise chain
2016/05/05 Javascript
JavaScript基础教程——入门必看篇
2016/05/20 Javascript
原生JS封装animate运动框架的实例
2017/10/12 Javascript
vue注册组件的几种方式总结
2018/03/08 Javascript
vue-cli 引入jQuery,Bootstrap,popper的方法
2018/09/03 jQuery
vue中多个倒计时实现代码实例
2019/03/27 Javascript
微信小程序bindtap事件与冒泡阻止详解
2019/08/08 Javascript
使用Vue.set()方法实现响应式修改数组数据步骤
2019/11/09 Javascript
三剑客:offset、client和scroll还傻傻分不清?
2020/12/04 Javascript
Bootstrap FileInput实现图片上传功能
2021/01/28 Javascript
python求素数示例分享
2014/02/16 Python
Python3.5面向对象程序设计之类的继承和多态详解
2019/04/24 Python
Pandas_cum累积计算和rolling滚动计算的用法详解
2019/07/04 Python
django实现用户注册实例讲解
2019/10/30 Python
python函数超时自动退出的实操方法
2020/12/28 Python
举例详解CSS3中的Transition
2015/07/15 HTML / CSS
德国汉莎航空中国官网: Lufthansa中国
2017/03/30 全球购物
爱奇艺VIP会员:大剧抢先看
2018/07/11 全球购物
美国LOGO设计公司:The Logo Company
2018/07/16 全球购物
大学生旷课检讨书
2014/01/22 职场文书
工程项目建议书范文
2014/03/12 职场文书
专家推荐信模板
2014/05/09 职场文书
爱与责任演讲稿
2014/05/20 职场文书
学习型党组织心得体会
2014/09/12 职场文书
车间安全生产管理制度
2015/08/06 职场文书
python使用opencv对图像添加噪声(高斯/椒盐/泊松/斑点)
2022/04/06 Python