课程来自:https://code.ziqiangxuetang.com/json/json-intro.html
一、概述
JSON:JavaScript Objection Notation(Javascript 对象表示法)
JSON是存储和交换文本信息的语法,类似XML。
JSON比XML更小、更快、更易解析。
二、JSON实例
{
"employees":[
{"firstname" : "John", "lastname" : "Doe"},
{"firstname" : "Anna", "lastname" : "Smith"},
{"firstname" : "Peter", "lastname" : "Jones"}
]
}
这个 employee 对象是包含 3 个员工记录(对象)的数组。
三、什么是JSON
JSON指的是JavaScript对象表示法(JavaScript Object Notation)
JSON是轻量级的文本数据交换格式
JSON独立于语言
JSON具有自我描述性,更易理解
JSON使用JavaScript语法来描述对象,但是JSON仍然独立于语言和平台。
JSON解析器和JSON库支持许多不同的编程语言
四、JSON转化为JavaScript对象
JSON文本格式在语法上与创建JavaScript对象的代码相同。
由于这种相似性,无需解析器,JavaScript程序能够使用内建的eval()函数,用JSON数据来生成原生的JavaScript对象。
JSON最常见的用法之一,是从web服务器上读取JSON数据(作为文件或者作为HttpRequest),将JSON数据转化为JavaScript对象,然后在网页中使用该数据。
五、JSON实例--来自字符串的对象
创建包含JSON语法的JavaScript字符串:
var txt = '{ "employees" : [' +
'{ "firstName":"John" , "lastName":"Doe" },' +
'{ "firstName":"Anna" , "lastName":"Smith" },' +
'{ "firstName":"Peter" , "lastName":"Jones" } ]}';
注意:
单引号包含的都是字符串噢!
外面是一个大字典,这个大字典的key是employees,value是一个数组,这个数组的元素是字典。
由于JSON语法是JavaScript的子集,JavaScript函数eval()可用于将JSON文本转换为JavaScript对象。
eval()函数使用的是JavaScript编辑器,可解析JSON文本,然后生成JavaScript对象。必须把文本包围在括号中,这样才能避免语法错误:
var obj = eval("(" + txt + ")");
在网页中使用JavaScript对象:
Create Object from JSON String
First Name:
Last Name:
var txt = '{"employees":[' +
'{"firstName":"John","lastName":"Doe" },' +
'{"firstName":"Anna","lastName":"Smith" },' +
'{"firstName":"Peter","lastName":"Jones" }]}';
var obj = eval ("(" + txt + ")");
document.getElementById("fname").innerHTML=obj.employees[1].firstName
document.getElementById("lname").innerHTML=obj.employees[1].lastName
六、JSON解析器
eval()函数可以编译执行任何JavaScript代码,这隐藏了一个潜在的安全问题。
使用JSON解析器将JSON转换为JavaScript对象是更安全的做法。JSON解析器只能识别JSON文本,而不会编译脚本。
在浏览器中,这提供了原生的JSON支持,而且JSON解析器的速度更快。
七、JSON语法规则
JSON语法是JavaScript语法的子集。
1、数据在名称/值对中
2、数据由逗号分割
3、花括号保存对象
4、方括号保存数组
八、JSON名称/值对
JSON数据的书写格式是:名称/值对。
名称/值对包括字段名称(在双引号中),后面写一个冒号,然后是值:
“fistname”:“John”
九、JSON值
JSON值可以是:
1、数字(整数或浮点数)
2、字符串(在双引号中)
3、逻辑值(true或者false)
4、数组(在方括号中)
5、对象(在花括号中)
null
十、JSON对象
JSON对象在花括号中书写:
对象可以包含多个名称/值对:
{"firstname":"John", "lastname":"Doe"}
十一、JSON数组
JSON数组在方括号中书写:
数组可以包含多个对象:
{
"employees": [
{ "firstName":"John" , "lastName":"Doe" },
{ "firstName":"Anna" , "lastName":"Smith" },
{ "firstName":"Peter" , "lastName":"Jones" }
]
}
对象employees是包含三个对象的数组。每个对象代表一条关于某人姓和名的记录。
十二、JSON使用JavaScript语法
因为JSON使用JavaScript语法,所以无需额外的软件就能处理JavaScript中的JSON
通过JavaScript,可以创建一个对象数组并这样赋值:
Create Object from JSON String
First Name:
var employees = [
{ "firstName" : "John" , "lastName" : "Doe" },
{ "firstName" : "Anna" , "lastName" : "Smith" },
{ "firstName" : "Peter" , "lastName" : "Jones" }, ];
employees[1].firstName="Jonatan";
document.getElementById("fname").innerHTML=employees[1].firstName;
可以像这样修改数据:
employees[0].firstname = "aaa"
十三、JSON文件
JSON文件的文件类型是 ".json"
JSON文本的MIME类型是“application/json”