JSON
json:JavaScript object notation:是一种数据格式,不是一种编程语言,虽然具有相同的语法形式,但是json并不属于JavaScript,而且,而且并不是只有JavaScript才能使用,json是一种轻量级数据交换格式
在js中主要用于和服务器做数据格式交换
json的结构:因为json是JavaScript的子集,他的结构有JavaScript对象和数组组成,这两种结构可以组成复杂的结构
语法:
1.简单值:使用与JavaScript相同的语法,可以在json中表示字符串、数值、布尔、null,
主要:但是不支持js特殊值undefined
2.对象:对象作为一种复杂的数据类型,表示的是一组有序的键值对,而每个键值对中的值可以是简单值,也可以是复杂的数据类型
3.数组:也是一种复杂的数据类型,表示一组有序值的列表,可以通过数值的索引来访问其中的值,数组的值可以是任意类型
简单值---对象--数组
简单值
例如:有效的json数据:5
这是json表示数值5的方式,
表示字符串:
“hello world”
区别:
json和JavaScript字符串的最大区别:
json字符串必须用双引号(用单引号会导致语法错误)
JavaScript字符串可以用单引号或双引号
布尔值和null也是有效的json形式,但是在实际中,json更多的用在复杂的数据结构中的一部分
对象
json中的对象与JavaScript字面量略有不同,
JavaScript字面量:
var persion={
name:"ssd",
age:22
};
json表示上述对象的方式:
{
name:"ssd",
age:22
}
区别:
与JavaScript的对象字面量相比
1.没有声明变量(json中没有变量的概念)
2.没有末尾的","()
3.对象的属性必须加双引号,在json里是必须的,属性值可以是简单值,复杂的数据类型
例如;json嵌套
{
“name”:"sdff",
"age":23,
"school":{
"name":"sdfgh",
"age":23
}
}
数组
json中,数组
格式:
[23,"dd",true]
注意:json数组也没有变量和分号
解析和序列化
1.可以将json数据结构解析成JavaScript对象,
注意:
1.并的数据用“,”表示
2.映射用“:”表示
3.并列数据结构是数组用[]表示
4.并列数据结构是对象用{}表示
json值的类型:
1.number类型: 和js中number类型一样
2.Boolean true false
3.String类型
4.null
5.数组Array类型
6.object类型
序列化:把JavaScript对象转换成json格式的字符串,通过网络给其他应用使用
JSON.stringify();
反序列化:把JSON字符串转换成JavaScript对象
JSON.parse();
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style type="text/css">
</style>
</head>
<body>
</body>
</html>
<script type="text/javascript">
//创建字面量对象
var person={
name:"张三",
age:23,
dog:{
dogName:"nimao"
},
friends:[
{
friendName:"李四"
},
{
friendName:"王五"
}
],
isMarry:false
}
// 序列化
var jsonStr=JSON.stringify(person);
alert(jsonStr);
//反序列化
var jsObj=JSON.parse(jsonStr);
alert(jsObj);
</script>