JSON(JavaScript Object Notation) JavaScript对象标记法;JSON是与JavaScript高度契合的;
JSON 语法:
--数组(Array)用"[ ]"表示;
--对象(Object)用"{ }"表示;
--名称/值对(name/value)组合成数组和对象;
--并列的数据用“,”隔开;
{
“name”:"kobe",
"age":38
}
JSON与XML
JSON相对于XML来说的优势:
-- 没有结束标签,长度更短,读写更快
-- 能够直接被JavaScript解释器解析
-- 可以直接使用数组
JSON:
{
“name”:"kobe",
"age":38,
“friends”:["james","wade","bosh"]
}
XML:
<root>
<name>kobe</name>
<age>38</age>
<friends>james</ftiends>
<friends>wade</ftiends>
<friends>bosh</ftiends>
</root>
JSON的解析和生成:
-- eval()函数: 接收参数后将参数直接当成JavaScript的代码执行;
<script>
var str = "console.log('执行了eval函数')"
eval(str); //控制台上将打印出“执行了eval函数”
</script>
eval()函数也可以解析json字符串,但是该函数是比较危险的,因为它是将字符串直接运行的。所以一般用该函数解析json字符串的话不是很合理;
<script>
var str = ‘{“name”:"kobe","age":38}’
var obj = eval( “(” + str + ")"); // 因为str参数是用大括号括起来的,直接运行的话JavaScript会当成一个代码块运行
console.log(obj)
</script>
--JSON.parse()函数解析json字符串,该函数用来解析json字符串是比较合理的,也多数浏览器也兼容;现在推荐使用此函数来解析JSON。
<script>
var str = ‘{“name”:"kobe","age":38}’
var obj = JSON.parse( str );
console.log(obj)
</script>
JSON.parse() 可以有两个参数,第一个是JSON字符串,第二个是个函数。那么该函数有两个参数:name 和 value,分别代表名称和值。当传入一个JSON字符串后,JSON的每一组名称/值对都要调用此函数。注意,该函数一定要有返回值,返回值 将赋值给 当前的名称(name)。一般运用在解析JSON字符串的同时用该函数对数据进行一些处理。
<script>
var str = ‘{“name”:"kobe","age":38}’
var obj = JSON.parse( str , fun );
function fun (name,value){
if( name == "age" )
value = 40;
return value; //一定要有返回值
} //此方法表示在解析JSON时当解析到“age”:38这个名称/值对的时候将该值修改成40;
console.log(obj) //控制台打印出:object {name:"kobe",age:40}
</script>