一 、什么是JSON?
- JSON指的是JavaScript对象表示法(JavaScript Object Notation)
- JSON是轻量级的文本数据交换格式
- JSON独立于语言*
- JSON具有自我描述性,更易理解
*JSON使用JavaScript语法来描述数据对象,但是JSON仍然独立于语言和平台。
JSON解析器和JSON库支持许多不同的编程语言。
二、JSON语法
(一)、JSON语法规则
JSON语法是JavaScript对象表示语法的子集。 - 数据在名称/值对中
- 数据由逗号 , 分隔
- 花括号 {} 保存对象
- 方括号 [] 保存数组
(二)、JSON名称/值对
JSON数据的书写格式是:名称/值对。
名称/值对包括字段名称(在双引号中),后面写一个冒号,然后是值:
“firstName”: “John” - {www.veryxzx.com}
等价于这条JavaScript语句:
firstName = “John”;
(三)、JSON值
JSON值可以是: - 数字(整数或浮点数)
- 字符串(在双引号 “” 中)
- 逻辑值(true或false)
- 数组(在方括号中)
- 对象(在花括号中)
- Null
(四)、JSON对象
JSON对象在花括号中书写:
对象可以包含多个名称/值对:
{ “firstName” : “John” , “lastName” : “Doe” } - {www.veryxzx.com}
(五)、JSON数组
JSON数组在方括号中书写:
数组可包含多个对象:
{
"employees":[
{
"firstName" : "John",
"lastName" : "Doe"
},
{
"firstName" : "Anna",
"lastName" : "Smith"
},
{
"firstName" : "Peter",
"lastName" : "Jones"
}
]
}
在上面的例子中,对象"employees"是包含三个对象的数组。每个对象代表一条关于某人(有姓和名)的记录。
(六)、JSON使用JavaScript语法
因为JSON使用JavaScript语法,所以无需额外的软件就能处理JavaScript中的JSON。
通过JavaScript,您可以创建一个对象数组,并像这样进行赋值:
var employees = [
{
"firstName" : "Bill","lastName" : "Gates" },
{
"firstName" : "George","lastName" : "Bush" },
{
"firstName" : "Thomas","lastName" : "Carter" }
];
//获取
console.log(employees[0].lastName);
//修改数据
employees[0].lastName="Jobs";
console.log(employees[0].lastName);
(七)、JSON文件
- JSON文件的文件类型是".json"
- JSON文本的MIME类型是"application/json"
- {www.veryxzx.com}
三、JSON字符串和JavaScript对象互转
(一)、JSON字符串转JavaScript对象
JSON最常见的用法之一,是从web服务器上读取JSON数据(作为文件或作为HttpRequest),将JSON数据转换为JavaScript对象,然后在网页中使用该数据。
下面的例子为两种JSON字符串转JavaScript对象的方法;推荐使用JSON.parse()
//==把JSON字符串转JavaScript对象
var strJson='[{
"firstName" : "Bill" , "lastName" : "Gates" },
{
"firstName" : "George" , "lastName" : "Bush" },
{
"firstName" : "Thomas" , "lastName" : "Carter"}]';
//1、使用JavaScript的eval();必须把文本包围在括号中,这样才能避免语法错误
var obj = eval("(" + strJson + ")");
console.log(obj[0].lastName);
//2、JSON.parse()推荐
var obj2=JSON.parse(strJson);
console.log(obj2[0].lastName);
(二)、JavaScript对象转JSON字符串
JSON.stringify()方法用于将JavaScript值转换为JSON字符串。
//==把JavaScript对象转JSON字符串
var employees = [
{
"firstName" : "Bill" , "lastName" : "Gates" },
{
"firstName" : "George" , "lastName" : "Bush" },
{
"firstName" : "Thomas" , "lastName" : "Carter" }
];
var str = JSON.stringify(employees);
console.log(typeof(str));
console.log(str);