JSON: JavaScript Object Notation(JavaScript 对象表示法)
什么是Json?
Json是java script 对象表示式
json是轻量级的文本数据交换格式
json对立于语言:json使用JavaScript语法来描述数据对象,但是json仍然独立于语言和平台。json解析器和json库支持许多不同的编程语言。目前非常多的动态(PHP,JSP,.net)编程语言都支持json
json具有自我描述性,更易于理解
JSON转化为JavaScript对象
json文本格式在语法上与创建JavaScript对象的代码相同
由于这种相似性,无需解析器,JavaScript程序能够使用内建的eval()函数,用json数据来生成原生的JavaScript对象
语法规则
JSON 语法是 JavaScript 对象表示语法的子集。
数据在名称/值对中
数据由逗号分隔
大括号保存对象
中括号保存数组
json名称/值对
书写格式: 名称: 值
名称在双引号中,后面一个冒号,然后是值:
"name": "张三"
JSON值
JSON值可以是:数字、字符串、逻辑值、数组、对象、null
数字: {"age": 23}
字符串: {"name": "kermit"}
对象: {"name":"kermit", "age": 23}
数组:数组在中括号中书写,数组可包含多个对象
{
sites: [
{"name": "aaa", "age": 22},
{"name": "bbb", "age": 23},
{"name": "ccc", "age":24}
]
}
JSON使用JavaScript语法:
因为 JSON 使用 JavaScript 语法,所以无需额外的软件就能处理 JavaScript 中的 JSON。
通过 JavaScript,您可以创建一个对象数组,并像这样进行赋值:
var sites =
[
{"name": "aaa", "age": 22},
{"name": "bbb", "age": 23},
{"name": "ccc", "age":24}
];
可以像这样访问 JavaScript 对象数组中的第一项(索引从 0 开始):
sites[0].name
返回的内容是: aaa
可以这样来修改数据: sites[0].name = "cccccc";
- JSON 文件的文件类型是 ".json"
- JSON 文本的 MIME 类型是 "application/json"
JSON 对象
对象语法:
JSON 对象使用在大括号({})中书写。
对象可以包含多个 key/value(键/值)对。
key 必须是字符串,value 可以是合法的 JSON 数据类型(字符串, 数字, 对象, 数组, 布尔值或 null)。
key 和 value 中使用冒号(:)分割。
每个 key/value 对使用逗号(,)分割。
实例: { "name":"aaa", "alexa":10000, "site":null }
访问JSON对象:
1.x = myObj.name;
2.x = myObj["name"];
循环JSON对象:
你可以使用 for-in 来循环对象的属性:
var myObj = { "name":"zzz", "alexa":10000, "site":null };
for (x in myObj) { document.getElementById("demo").innerHTML += x + "<br>"; }
在 for-in 循环对象的属性时,使用中括号([])来访问属性的值:
var myObj = { "name":"runoob", "alexa":10000, "site":null };
for (x in myObj) { document.getElementById("demo").innerHTML += myObj[x] + "<br>"; }
JSON 对象中可以包含另外一个 JSON 对象:
myObj = {
"name":"runoob",
"alexa":10000,
"sites": {
"site1":"www.runoob.com",
"site2":"m.raddb.com",
"site3":"c.robddd.com"
} }
你可以使用点号(.)或者中括号([])来访问嵌套的 JSON 对象。
x = myObj.sites.site1; // 或者 x = myObj.sites["site1"];
JSON修改值
你可以使用点号(.)来修改 JSON 对象的值:
myObj.sites.site1 = "www.google.com";
你可以使用中括号([])来修改 JSON 对象的值:
myObj.sites["site1"] = "www.google.com";
JSON删除对象属性
使用 delete 关键字来删除 JSON 对象的属性:
delete myObj.sites.site1;
使用中括号([])来删除 JSON 对象的属性:
delete myObj.sites["site1"];
JSON数组
数组作为JSON对象
实例:["aa", "bb", "cc"]
json数组在中括号中书写
json中数组值必须是合法的json数据类型
JSON对象中的数组,
对象属性的值可以是一个数组:
{
"name": "Kermit",
"num": 3,
"sites": ["google", "taobao", "jindong"]
}
循环数组:
你可以使用 for-in 来访问数组:
myObj = {
"name":"网站",
"num":3,
"sites":[ "Google", "Taobao" ]
};
for (i in myObj.sites) {
x += myObj.sites[i] + "<br>";
}
嵌套json对象中的数组
JSON 对象中数组可以包含另外一个数组,或者另外一个 JSON 对象:
使用 for-in 来循环访问每个数组:
for (i in myObj.sites) {
x += "<h1>" + myObj.sites[i].name + "</h1>";
for (j in myObj.sites[i].info) {
x += myObj.sites[i].info[j] + "<br>";
} }
你可以使用索引值来修改数组值:
myObj.sites[1] = "Github";
我们可以使用 delete 关键字来删除数组元素:
delete myObj.sites[1];
JSON.parse()
JSON 通常用于与服务端交换数据。
在接收服务器数据时一般是字符串。
我们可以使用 JSON.parse() 方法将数据转换为 JavaScript 对象。
JSON.parse(text[, reviver])
参数说明:
- text:必需, 一个有效的 JSON 字符串。
- reviver: 可选,一个转换结果的函数, 将为对象的每个成员调用此函数。
JSON解析实例:
我们从服务器接收以下数据:
{ "name":"tencent", "alexa":10000, "site": "www.tencent.com" }
我们用JSON.parse()方法处理以上数据,将其转化为JavaScript对象
var obj = JSON.parse(' { "name":"tencent", "alexa":10000, "site": "www.tencent.com" } ');
kunkunkun!!!!!!!!