般若

心怀梦想,脚踏实地 ...

JSON快速入门指南

JSON是什么

JSON(JavaScript对象表示法 JavaScript Object Notation),是存储和交换文本信息的语法,轻量级的文本数据交换格式,类似XML,但是比XML更小、更快、更容易解析。
JSON独立于各种编程语言平台,并且几乎所有的主流编程语言都内置了对JSON数据格式的支持。


JSON语法规则

JSON语法是JavaScript对象表示法语法的子集:

  • 数据以名/值 对的形式表示
  • 数据之间以逗号分隔
  • 花括号保存对象
  • 方括号保存数组

JSON值

JSON名值对包括字段名称(包含在双引号中),后面一个冒号,然后是值,如:

"username": "Jessica"

JSON值可以包含以下多种类型:

  • 数字(整数和浮点数)
  • 字符串(在双引号中)
  • 逻辑值(true或false)
  • 数组(在方括号中)
  • 对象(在花括号中)
  • null

JSON对象和JSON数组

JSON对象包含在花括号中,可以包含多个名/值对,其值可以为数组;JSON数组包含在方括号中,可以包含多个对象。JSON既可以以花括号开头,也可以以方括号开头,JSON对象和JSON数组可以互相嵌套,如:

{
    "users": [
        {"username":"Jacky",age:30},
        {"username":"Jessica",age:23},
        {"username":"James",age:42}
    ]
}

JSON文件

  • json文件的后缀为:”.json”
  • JSON文件的MIME类型为:“application/json”

JSON解析和序列化

早期的JSON解析器基本上就是使用JavaScript的eval()函数。由于JSON是JavaScript语法的子集,因此eval()函数可以解析并返回JavaScript对象和数组。
ECMAScript 5对解析JSON的行为进行了规范,定义了全局对象JSON。

JSON解析

使用JSON.parse()把字符串解析为JSON对象或数组。

//返回JSON对象
var jsonStr1 = '{"username":"Jessica","age":23}';
var jsonObj = JSON.parse(jsonStr1);
console.log(jsonObj.username); //Jessica
console.log(jsonObj.age) //23

//返回JSON数组
var jsonStr2 = '[{"username":"Jacky","age":30}, {"username":"Jessica","age":23}]';
var jsonArr = JSON.parse(jsonStr2);
for(var i=0;i<jsonArr.length;i++) {
    console.log(jsonArr[i].username); //Jacky Jessica
}

JSON序列化

使用JSON.stringify()把JSON对象或数组序列化为字符串。

//序列化JSON对象
var jsonObj = {
    "username": "Jessica",
    "age": 23
};
var jsonStr1 = JSON.stringify(jsonObj);
console.log(jsonStr1); //{"username":"Jessica","age":23}

//序列化JSON数组
var jsonArr = [
    {"username":"Jacky","age":30},
    {"username":"Jessica","age":23}
];
var jsonStr2 = JSON.stringify(jsonArr, null, 2);
console.log(jsonStr2); 
/* 输出结果:
[
  {
    "username": "Jacky",
    "age": 30
  },
  {
    "username": "Jessica",
    "age": 23
  }
]
*/

*另外,当序列化后的字符串比较长时,可以通过设置JSON.stringify()方法的第三个参数,使字符串进行缩进,方便调试。

阅读更多
版权声明:本文为博主原创文章,可以转载,但请添加原文链接。 https://blog.csdn.net/hwhsong/article/details/51222228
个人分类: Front-End
上一篇ExtJS5 - 实现带周数的日期选择控件
下一篇认识KendoUI
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭