[javascript]
varjsObj={};jsObj.testArray=[1,2,3,4,5];jsObj.name='CSS3';jsObj.date='2011年5月8日';varstr=JSON.stringify(jsObj );警报(str);
[javascript]
varjsObj={};jsObj.testArray=[1,2,3,4,5];jsObj.name='CSS3';jsObj.date='2011年5月8日';varstr=JSON.stringify(jsObj );varstr1=JSON. 解析(str);警报(str1);
改变:
首先明确两个概念:
JSON 字符串:
var str1 = '{ "name": "deyuyi", "sex": "man" }';
JSON 对象:
var str2 = { "name": "deluyi", "sex": "man" };
可以简单地这样理解:
JSON对象是一种可以被JQuery直接操作的格式,就像在C#中一样,可以用对象(类名)来指出属性(方法);
JSON 字符串只是一个字符串,一个整体。 如果不被拦截,就没有办法取出里面存储的数据,也不能直接使用jquery解析json字符串,除非你只想alert()他;
1.将JSON字符串转换为JSON对象
要使用前面的str1,必须通过以下方式将其转换为JSON对象:
A:评估函数
eval函数可以直接将本质上符合或近似符合JSON格式的字符串转换为JSON对象,使用方法如:
eval('('+str+')');//其中str是满足这个标题描述的字符串
//由JSON字符串转换为JSON对象
var str='{ "name": "John" }'; var obj = eval('(' + str + ')'); alert( obj.name); var str2="{ 'name': 'John' }"; var obj2 = eval('(' + str2 + ')'); alert( obj2.name); var str3="{ name: 'John' }"; var obj3 = eval('(' + str3 + ')'); alert( obj3.name);
以上所有操作都会输出结果“john”。
Eval 方法可以转换以下标准和非标准格式字符串:
var str="{ 'name': 'John' }"; var str2='{ "name": "John" }'; var str3="{ name: 'John' }";
请参阅此示例下载包:JqueryDemo1.html
B:parseJSON函数
另一个将标准字符串转换为JSON对象的函数是parseJSON(),使用诸如jQuery.parseJSON(str)之类的方法//其中str是符合本标题描述的字符串
//由JSON字符串转换为JSON对象
var str='{ "name": "John" }'; var obj = jQuery.parseJSON(str) alert("1"+ obj.name);
以上所有操作都会输出结果“john”。
该方法仅支持标准格式:varstr='{"name":"John"}';
请参阅下载包中的示例:JqueryDemo2.html
C: JSON.parse 函数
另一个将标准字符串转换为JSON对象的函数是JSON.parse(),使用的方法如JSON.parse(str)//其中str是符合本标题描述的字符串
var str = '{ "name": "mady", "age": "24" }'; var obj = JSON.parse(str); alert(obj.name);
以上所有操作都会输出结果“john”。
该方法仅支持标准格式:varstr='{"name":"John"}';
请参阅此示例下载包:JqueryDemo3.html
上面结果一致,输出名称,如右图:
非常小心:如果 obj 本来是 JSON 对象,那么使用 eval() 函数转换后仍然是 JSON 对象(即使转换多次),并且使用 parseJSON() 函数处理后会出现问题(抛出一个句子异常)。
2.将JSON对象转换为字符串
您可以使用 toJSONString() 或全局方法 JSON.stringify() 将 JSON 对象转换为 JSON 字符串。
例如:
varlast=obj.toJSONString();//将JSON对象转换为JSON字符
或者
varlast=JSON.stringify(obj);//将JSON对象转换为JSON字符
警报(最后);
3. 解析和读取JSON
当我们将字符串转换成各种形式的JSON对象后,我们对其进行解析。
正如前面的例子:
var str2 = { "name": "mady", "sex": "man" };
可以这样读:
alert(str2.name);//和C#一样直接往出点…
弹出“疯狂”。
我们遇到的 JSON 很少如此简单jquery解析json字符串,例如更复杂的 JSON 对象如:
var str={"GetUserPostByIdResult":{"Age":"33","ID":"2server","Name":"mady"}};
解析为:
alert(str.GetUserPostByIdResult.Name);//一次点不出来,我多点几次
弹出窗口:“疯狂”。
更复杂的比如:
var data=" { root: [ {'name':'6200','value':'0'}, {'name':'6101','value':'xa'}, {'name':'6102','value':'beijing'}, {'name':'6103','value':'haerbin'}]}";
如果你想挑出来,分析一下:
alert(dataObj.root[0].name);
弹出窗口:“6200”。
如果你想分组选择,请分析:
$.each(dataObj.root, function(index, item) { $("#info").append( "" +index+":"+ item.name + "" + "" +index+":"+ item.value + "
"); });
其中,“#info”是一个DIV的ID。 输入结果如右图所示:
请参阅此示例下载包:JqueryDemo4.html
注意:如果本例中需要使用其他转换函数,请将字符串中的单冒号修改为双冒号,外面的逗号修改为单冒号。
本文所有代码:点击下载
改变: