json数据
Json是互联网上结构化数据的传输标准;javascript,php等语言对其支持度都很好。
Json最重要的一点是小巧轻便,便于数据的传输,无关乎语言,php里可用json_decode和json_encode函数进行json数据的解析与序列化。(解析既把json数据转换为便于操作的类型比如数组,序列化则把便于操作的数据类型转化为json数据)。
下面讲讲js里面的json:
Json数据类型有三种:
1.简单值。简单值就是串数字或者字符,但字符必须用双引号引起,单引号会出错,如下数值量:5字符量:”this is json string”
2.对象。结构如下
{
“key1”:”value1”,
“key2”:”value2”
}
属性名必须用双引号引起,值为字符类型时也必须用双引号;同一对象中不能出现相同的属性如
{
“key2”:”value2”,
“key2”:”value2”
}
这是不被允许的
3.数组。结构如下
[
{
“key1”:”value1”,
”key2”:”value2”
},
{
“key1”:”value1”
},
{
“key1”:”value1”
},
]
json数据的应用主要是对象与数组类型结合起来传输复杂的数据
Json数据的解析与序列化:
先看代码
var user = {
"source" : {
"sname" : "javascript高级程序设计",
"id" : "11",
"price" : "59"
},
"person" : {
"uname" : "梁",
"uid" : "18",
"age" : "20"
}
};/*此分号为js的语句结束符,json里是没有的*/
var json1 = JSON.stringify(user,["source"]);
/* json1输出为{"source":{}}*/
json2=JSON.stringify(user);
/*json2={"source":{"sname":"javascript高级程序设计","id":"11","price":"59"},"user":{"uname":"梁","uid":"18","age":"20"}}*/
json3 = JSON.stringify(user,null,4);
/*
json3输出如下:
{
"source": {
"sname": "javascript高级程序设计",
"id": "11",
"price": "59"
},
"user": {
"uname": "梁",
"uid": "18",
"age": "20"
}
}
*/
var arr = JSON.parse(json1);
/*对json1,json2,json3进行typeof操作得到string类型,对arr进行typeof操作得到object类型而user本身也是object类型*/
/*现在可以访问arr里面的数据了,和访问user内部数据的方法完全相同了*/
解析:JSON.parse(),解析为数组对象。可以有两个参数,第一个为json数据,第二个为一个有两个参数(key,value)的函数,key为值接受json数据里的key值,value为相应的value值,且函数需要有返回值,否则所有删除json数据中相对的值
序列化:JSON.stringify();接受三个参数,第一个为要序列化的对象(必须),第二个为可选的过滤参数(把key不等于数组里值全部过滤,json1里的user就被过滤了)也可以是数组也可以是上述所说的有两个参数的函数类型,第三个参数为字符串缩进,值为0~10
Json做为一种数据格式,用起来确实挺方便,国创时做的事手机app,客户端与服务器之间的数据交换就是用json格式进行的,并且php里把数组转换为json特特别容易,但需留意的是json只接受utf8格式的数据,其它格式不能正确转换