JSON的全称是”JavaScript Object Notation”,意思是JavaScript对象表示法,它是一种基于文本,独立于语言的轻量级数据交换格式。
浏览器从服务器端接收数据时,那些数据必须以浏览器能够理解的格式来发送,服务器端的编程语言只能以如下3种格式返回数据:xml、json、html
对于 AJAX 应用程序来说,JSON 比 XML 更小、更快,更易解析。
1.语法:
JSON 语法是 JavaScript 对象表示法语法的子集。
数据在名称/值对中
数据由逗号分隔
花括号保存对象
方括号保存数组
var employees = [
{ "firstName":"Bill" , "lastName":"Gates" },
{ "firstName":"George" , "lastName":"Bush" },
{ "firstName":"Thomas" , "lastName": "Carter" }
];
注意区分:
字符串:这个很好解释,指使用“”双引号或’’单引号包括的字符。例如:var comStr = 'this is string';
json字符串:指的是符合json格式要求的js字符串。例如:var jsonStr = "{StudentID:'100',Name:'tmac',Hometown:'usa'}";
json对象:指符合json格式要求的js对象。例如:var jsonObj = { StudentID: "100", Name: "tmac", Hometown: "usa" };
2.使用 JSON:
JSON最常见的用法之一是从web服务器上读取JSON数据(文件或作为HttpRequest),将JSON数据转换为JavaScript对象,然后在网页中使用该数据。
Json只是一种文本字符串,被存储在responseText属性中,为了读取存储在responseText属性中的json数据,需要根据js中的eval()函数把字符串
当作它的参数,然后这个字符串会被当做js代码来执行
JSON.parse 将 JSON 字符串转换成对象。
var jsontext = '{"firstname":"Jesper","surname":"Aaberg","phone":["555-0100","555-0120"]}';
var contact = JSON.parse(jsontext);
document.write(contact.surname + ", " + contact.firstname);
document.write(contact.phone[1]);
// Output:
// Aaberg, Jesper
// 555-0100
3.实例
我们首先定义一个JSON对象,代码如下。
var obj = {
1: "value1",
"2": "value2",
count: 3,
person: [ //数组结构JSON对象,可以嵌套使用
{
id: 1,
name: "张三"
},
{
id: 2,
name: "李四"
}
],
object: { //对象结构JSON对象
id: 1,
msg: "对象里的对象"
}
};
从JSON中读数据
function ReadJSON() {
alert(obj.person[0].name); //或者alert(obj.person[0]["name"])
alert(obj.object.msg); //或者alert(obj.object["msg"])
}
向JSON中写数据
function Add() {
//往JSON对象中增加了一条记录
obj.sex= "男" ;//或者obj["sex"]="男"
}
增加数据后的JSON对象如图:
修改JSON中的数据
function Update() {
obj.count = 10; //或obj["count"]=10
}
删除JSON中的数据
function Delete() {
delete obj.count;
}
遍历JSON对象:
可以使用for…in…循环来遍历JSON对象中的数据,比如我们要遍历输出obj对象的值,代码如下:
function Traversal() {
for (var c in obj) {
console.log(c + ":", obj[c]);
}
}
4.AJAX中的Json
if(xmlHttp.readyState==4){
if(xmlHttp.status==200){
var xmlDoc=xmlHttp.responseText;
var data=eval(xmlDoc);
alert(data[0].userId+","+data[0].userName+","+data[0].userSex);
alert(data[1].userId+","+data[1].userName+","+data[1].userSex);
}else{
alert("AJAX服务器返回错误!");
}
}