参考自:
w3school
runoob
语法特点:
数据在名称/值对中
数据由逗号分隔
花括号保存对象
方括号保存数组
对象:
{ "firstName":"John" , "lastName":"Doe" }
数组:
{
"employees": [
{ "firstName":"John" , "lastName":"Doe" },
{ "firstName":"Anna" , "lastName":"Smith" },
{ "firstName":"Peter" , "lastName":"Jones" }
]
}
注意一般后台返回的都是字符串文本形式,所以要将字符串JSON转换为javaScript对象
有两种方式:
第一种:eval函数:注意eval函数中要加括号
<script type="text/javascript">
var zu = '{"ss":['+
'{"name" : "12","age" : "13"},'+
'{"name":"22"},'+
'{"name":"32"} ]}';
var json=eval("("+zu+")");
document.getElementById("name").innerHTML =
json.ss[0].age;
</script>
第二种: JSON 解析器比上一种更安全,更普遍使用
<script type="text/javascript">
var zu = '{"ss":['+
'{"name" : "12","age" : "13"}, '+
'{"name":"22"}, '+
'{"name":"32"} ]}';
object = JSON.parse(zu);
document.getElementById("name").innerHTML =
object.ss[1].name;
</script>
eval() 函数可编译并执行任何 JavaScript 代码。这隐藏了一个潜在的安全问题。
使用 JSON 解析器将 JSON 转换为 JavaScript 对象是更安全的做法。JSON 解析器只能识别 JSON 文本,而不会编译脚本。
在浏览器中,这提供了原生的 JSON 支持,而且 JSON 解析器的速度更快。
在前台还有个方法可以自动帮我们将JavaScript 对象转换成字符串:
var obj = { "name":"runoob", "alexa":10000, "site":"www.runoob.com"};
var myJSON = JSON.stringify(obj);
JavaScript 数组转换为 JSON 字符串:
var arr = [ "Google", "Runoob", "Taobao", "Facebook" ];
var myJSON = JSON.stringify(arr);
JSON 不能存储 Date 对象。
JSON.stringify() 会将所有日期转换为字符串。如下代码是有问题的
var obj = { "name":"Runoob", "initDate":new Date(), "site":"www.runoob.com"};
var myJSON = JSON.stringify(obj);
JSON 不允许包含函数,JSON.stringify() 会删除 JavaScript 对象的函数,包括 key 和 value。
访问JSON中的属性:
1. json["age"]
2. json.age
还可以删除JSON中的属性:
delete json["age"]
以上的都是基础的JSON ,
接下来这篇才是实用的前后台交互所需要的JSON。