这几天,在做ajax传递的时候,完全搞不清楚定义json字符串,数组,对象的区别,也不知道怎么定义,于是时候专门查了一下,一下两个连接是我这篇博文的主要参考:
1.
javascript、js操作json方法总结 http://www.haorooms.com/post/js_jsons_h
2.
JSON字符串与JSON对象的区别 http://www.haorooms.com/post/json_object_json_string
好了,直接开始:
json手册中规定json的语法规则:花括号({})保存对象,方括号([])保存数组。
json的数据规则:名/值对的形式,字符串必须使用双引号("")包起来,具体表现形式: "firstName" : "John"(相当于js的:firstName = "John"),多个名值对之间使用逗号(,)分隔。
json字符串:var str1 = '{"name" : "maosilu", "sex" : "woman"}';
json对象: var str2 = {"name" : "maosilu", "sex" : "woman"};
要运用上面的str1,必须运用下面的要领先转化为JSON对象(这一点在ajax返回的时候,经常遇到!):
json字符创转json对象有三种方法:
1. var obj = eval('(' + str1 + ')'); //json字符串转换为json对象
2. var obj = str1.parseJSON(); //json字符串转换为json对象
3. var obj = JSON.parse(str1); //json字符串转换为json对象
取值的方式为:alert(obj.name); alert(obj.sex);
特别注意:如果obj本来就是一个JSON对象,那么运用 eval()函数转换后(哪怕是多次转换)还是JSON对象,但是运用 parseJSON()函数处理后会有疑问(抛出语法异常)。
json对象转化为json字符串有两种方法:
1. var last = obj.toJSONString();
2. var last = JSON.stringify(obj);
取值的方式为:alert(last);
上面的多个要领中,除了eval()函数是js自带的之外,其他的多个要领都来自json.js包。新版本的 JSON 修改了 API,将 JSON.stringify() 和 JSON.parse() 两个要领都注入到了 Javascript 的内建对象里面,前者变成了 Object.toJSONString(),而后者变成了 String.parseJSON()。如果提示找不到toJSONString()和parseJSON()要领,则说明您的json包版本太低。
上面是对javascript的简单总结,部分总结参考网络。但是很多在平时都用的到,特别是json字符转对象的操作!这点是非常重要的!
JSON字符串与JSON对象的区别:
JSON对象是直接可以使用JQuery操作的格式,和js中的对象一样,可以用对象(类名)点出属性(方法)。
JSON字符串仅仅只是一个字符串,一个整体,不截取的话没办法取出其中存储的数据,不能直接使用,除非你只想alert()他。