欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JSON

程序员文章站 2022-05-31 11:02:38
...

一、什么是JSON
JSON:javascript对象表示法(JavaScript Object Notation)。

JSON是轻量级的文本数据交换格式。

JSON独立于语言。(JSON使用javascript语法来描述数据对象,但是JSON仍然独立于语言和平台。JSON解析器和JSON库智齿许多不同的编程语言)

JSON具有自我描述性,更易理解。

JSON比XML更小、更快、更易解析。

二、JSON转换为javascript对象
JSON文本格式在语法上与创建的javascript对象的代码相同。

由于这种特性,无需解析器,javascript程序能够使用内建的eval()函数,,用JSON来生成原升javascript对象。

eval()函数:可计算某个字符串,并执行其中的javascript代码

三、JSON特点
类似XML
JSON是纯文本
JSON具有自我描述性(人类可读)
JSON具有层级结构(值中存在值)
JSON可通过javascript进行解析
JSON数据可使用AJAX进行传输

相比XML的不同之处
没有结束标签
更短
读写的速度更快
能够使用内建的javascript eval()方法进行解析
使用数组
不使用保留字

四、为什么使用JSON
对于使用AJAX应用程序来说,JSON比XML更快更易使用:

使用XML
读取XML文档
使用XML DOM来循环遍历文档
读取值并存储在变量中
使用JSON
读取JSON字符串
用eval()处理JSON字符串

五、JSON语法
JSON语法是javascript语法的子集。

数据在名称/值对中
数据由逗号分隔
花括号保存对象
方括号保存数组

JSON名称/值对
JSON数据的书写格式是:名称/值对。

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

“firstName” : “John”

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

对象可以包含多个名称/值对:

{ “firstName”:“John” , “lastName”:“Doe” }
JSON对象的两个方法:stringify()和parse()。这两个方法分别用于把javascript对象序列化为JSON字符串和把JSON字符串解析为原生javascript值。

stringify()

var book = {
title:“Professional”,
authors:[“Nicholas C. Zakas”],
edition:3,
year:2011
};

    var jsonText = JSON.stringify(book);

这个例子使用JSON.stringify()把一个javascript对象序列化为一个JSON字符串,然后将它保存在变量jsonText中。默认情况下,JSON.stringify()输出的JSON字符串不包含任何空格字符或缩进,因此保存在jsonText中的字符串为:

{“title”:“Professional”,“authors”:[“Nicholas C. Zakas”],“edition”:3,“year”:2011}
在序列化javascript对象时,所有函数及原型成员都会被有意忽略,不体现在结果中。此外,值为undefined的任何属性也都会被跳过。结果中最终都是值为有效JSON数据类型的实例属性。

prase()
将JSON字符串直接传递给JSON.prase()就可以得到相应的javascript值。例如,使用下列代码就可以创建与book类似的对象
var bookCopy = JSON.parse(jsonText);
如果传给JSON.prase()的字符串不是有效的JSON,该方法会抛出错误
JSON数组
JSON数组在方括号中书写

数组可以包含多个对象:

{
“employees”: [
{ “firstName”:“John” , “lastName”:“Doe” },
{ “firstName”:“Anna” , “lastName”:“Smith” },
{ “firstName”:“Peter” , “lastName”:“Jones” }
]
}
在上面的代码中,对象"employees"是包含三个对象的数组。每个对象代表一条关于某人(有姓和名)的记录

JSON使用javascript语法
因为JSON使用javascript语法,所以无需额外的软件就能处理javascript中的JSON

例子

var employees = [
{ “firstName”:“Bill” , “lastName”:“Gates” },
{ “firstName”:“George” , “lastName”:“Bush” },
{ “firstName”:“Thomas” , “lastName”: “Carter” }
];
可以像这样访问javascript对象数组中的第一项

employees[0].lastName;

JSON文件
JSON文件的类型是“.json”
JSON文本的MIME类型是“application/json”

六、JSON使用
把JSON文本转换为javascript对象
JSON最常见的用法之一,是从web服务器上读取JSON数据(作为文件或作为HttpRequest),将JSON数据转换为javascript对象,然后在网页中使用该数据。

for in遍历JSON
获取对象属性的语法:
1.obj.attr
2.obj[“attr”]
for in遍历JSON的时候
1.for(attr in JSON)中的attr是获取到的JSON中属性的名字,是个字符串
2.json[attr]获取到的是属性的值,该属性的值的数据类型,与JSON中该属性的值的数据类型一致。

var json = {
“lrc1”:{“time”: “00:53.68”, “lrc”: “一起醉一回”},
“lrc2”:{“time”: “00:56.68”, “lrc”: “男人为什么不回家”},
“lrc3”:{“time”: “00:58.86”,“lrc”: “只因家里那个她”},
“lrc4”:{“time”: “01:01.19”, “lrc”: “独自一人闯天涯”},
“lrc5”:{“time”: “01:03.33”, “lrc”: “天不怕地不怕”},
“lrc6”:{“time”: “01:05.65”,“lrc”: “男人他一肩挑霜华”},
“lrc7”:{“time”: “01:07.84”, “lrc”: “只因压力如山大”},
“lrc8”:{“time”: “01:10.22”, “lrc”: “你负责贤惠美如花”},
“lrc9”:{“time”: “01:12.38”,“lrc”: “我就负责赚钱养家”}
}
for(attr in json){
var obj = json1[attr];
document.write(obj.time + " " + obj.lrc + “
”)
}