} JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成,而且它是基于JavaScript 的。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript 等)。这些特性使JSON成为理想的数据交换语言
} JSON有两种结构:
◦ “名/值”对的集合(A collection of name/value pairs)。在不同的语言中,它被理解为对象,结构,关联数组等
◦ 值的有序列表(An ordered list of values)。在大部分语言中,它被理解为数组
这些都是常见的数据结构。事实上大部分现代计算机语言都以某种形式支持它们。这使得一种数据格式在同样基于这些结构的编程语言之间交换成为可能
下面的JSON表示名称/值对:
{ "firstName": "Brett" }
多个名称/值对串在一起:这是一个对象,有三个属性,分别是firstName,lastName,email
{ "firstName": "Brett", "lastName":"McLaughlin", "email": "[email protected]" }
从语法方面来看,这与名称/值对相比并没有很大的优势,但是在这种情况下 JSON
更容易使用,而且可读性更好
当需要表示一组值时,JSON 不但能够提高可读性,而且可以减少复杂性:
{ “employees": [
{ "firstName": "Brett", "lastName":"McLaughlin", "email": "[email protected]" },
{ "firstName": "Jason", "lastName":"Hunter", "email": "[email protected]" },
{ "firstName": "Elliotte", "lastName":"Harold", "email": "[email protected]" }
] }
这比相应的XML格式表示的数据更加简洁:
相应的XML格式:
<employees>
< employee >
<firstName>Brett</firstName>
<lastName>McLaughlin</lastName>
<email>[email protected]</email>
</ employee >
< employee >
<firstName>Jason</firstName>
<lastName>Hunter</lastName>
<email>[email protected]</email>
</ employee >
< employee >
<firstName>Elliotte</firstName>
<lastName>Harold</lastName>
<email>[email protected]</email>
</employee>
</ employees >
} 可读性
◦ JSON和XML的可读性可谓不相上下,XML略占上风
} 可扩展性
◦ XML天生有很好的扩展性,JSON当然也有,没有什么是XML能扩展,JSON不能的。
} 编码难度
◦ XML有丰富的编码工具,比如Dom4j、JDom等,JSON也有json.org提供的工具,但是JSON的编码明显比XML容易许多,即使不借助工具也能写出JSON的代码,可是要写好XML就不太容易了
} 解码难度
◦ XML的解析得考虑子节点父节点关系,让人头昏眼花,而JSON的解析难度几乎为零。
} 流行度
◦ XML已经被业界广泛的使用,而JSON才刚刚开始,但在Ajax领域,JSON凭借自身的优势有可能最终取代XML
JSON是JavaScript原生格式,这意味着在JavaScript中处理JSON数据不需要任何特殊的 API 或工具包。
} 将JSON数据赋值给变量:
var company =
{ “employees": [
{ "firstName": "Brett", "lastName":"McLaughlin", "email": [email protected]" },
{ "firstName": "Jason", "lastName":"Hunter", "email": "[email protected]" },
{ "firstName": "Elliotte", "lastName":"Harold", "email": "[email protected]" }
]
};这样将创建一个JavaScript对象
以JavaScript对象的方式访问数据,如获取第一个雇员的firstName信息:
◦ company.employees[0].fristName
正如可以用点号和括号访问数据,也可以按照同样的方式轻松地修改数据:
◦ company.employees[0].fristName=“Vincent”
服务器端返回JSON相应的文本表示,如:
◦ {“city” : “Hefei”, “province” : “Anhui”}
客户端使用eval()函数将JSON文本转化为JavaScript对象:
Var response =eval(”(”+request.responseText+”)”);
注意,使用额外的圆括号可使eval()函数将来源输入无条件地视为表达式进行解析。
然后从JavaScript对象中取得相应的值:
Document.getElementById(“city”).value=response.city;
Document.getElementById(“province”).value=response. province;
通过ajax访问远程页面,该页面返回值
if (isok)
Response.Write( "{result:'success'}");
else
Response.Write( "{result:'failed'}");
==========调用返回的值----------------------------
var fnCallBack = function(oResult) {
var oDiv = document.getElementById("divLoading");
if (oDiv) {
oDiv.innerHTML = "";}
var res = eval("("+oResult+")");
if (res.result == "success")
alert("ok");
else
alert("帐号或密码错误,请重试!");
}