一、JSON理论
Json的全称为 Java Script Object Notation(JavaScript对象表示方法),从名字就可以它的常用场景是在web项目中,是存储和交换文本信息的语法,和XML非常类似。由于其比XML更小、更快而且更容易解析,所以在一般情况下用JSON替代了XML。JSON虽然使用JavaScript语法描述数据对象,但是其仍然独立于平台和语言,JSON解析器和JSON库支持不同的语言编程,当前流行的动态编程语言(PHP /JSP /.NET)都支持JSON。
JSON实例:
{
"taskID" : 12 , //数字
"taskName" : "TN-012" , //字符串
"isFinish" : true , //true or false
"taskItem" : [
{
"itemName":"TN-012-001"
},
{
"itemName":"TN-012-002"
}
] , //数组
"taskSpendTime" : {
"hours":13
} , //对象
"others" : null //null
}
二、JSON基本语法
2.1 JSON值
从上述的JSON实例中可以看出,JSON的值可以分为6种:
- 数字 (整数和逻辑值)
- 字符串 (在双引号中)
- 逻辑值 (true or false)
- 数组 (在方括号中)
- 对象 (在花括号中)
- null
2.2 JSON对象
JSON对象是包括在花括号中的,对象是以多个key/value形式构成的:
{
"name" : "wangweiwei" ,
"address" : "Beijing"
}
"name" : "wangweiwei" ,
"address" : "Beijing"
}
这一点等价于JavaScript中的 name = "Wangweiwei" address = "Beijing"。
2.3 JSON数组
JSON数组时包含在方括号中的,一个JSON数组可以包括多个JSON对象。
三、JSON在JavaScript中在应用
在JavaScript中,常见的有三种:普通对象,JSON对象,JSON字符串。
JSON字符串: var str = '{"task":"task1","taskNo":"001"}'; //注意有‘’,是字符串性质的
JSON对象: var obj = {"task":"task1","taskNo":"001"}; //符合JSON数据个数的JSON对象
普通JS对象: function Task(String task,String taskNo){
this.task = task;
this.taskNo = taskNo;
}
var obj2 = new Task("task3","taskNo003");
3.1 JSON字符串转换为JSON对象
(1) var obj = eval('('+str+')');
(2) var obj = str.parseJSON();
(3) var obj = JSON.parse(str);
Note: 如果obj本来就是一个JSON的对象,那么经过eval经过多次转换之后仍然为JSON对象,但是使用parseJSON()函数转化之后就会有异常。
3.2 JSON对象转换为JSON字符串
(1) var str = obj.toJSONString();
(2) var str = JSON.stringify(obj);
普通对象转换成JSON字符串的方法相同。
Note:在上述的几个方法中,eval函数是js自带的,其他的方法都来自于json.js包,在新版本的JSON API中,将全局函数JSON.parse()和JSON.stringify()都内嵌到JS的内建对象中了,分别为String.parseJSON() 和 Object.toJSONString(),如果找不到,则说明json包版本太低。
四、其他
如果JSON字符串太多,防止出错,那么可以采用JSON校验工具进行检测。JSON校验网址:
http://www.json.cn