在数据传输流程中,json是以文本,即字符串的形式传递的,而JS操作的是JSON对象,所以,JSON对象和JSON字符串之间的相互转换是关键。
一:将json对象转换为json字符串
1:在js中生成简单的json对象,并将其转换为json字符串
上图中第一个alert(student)为json对象如下:
第2个alert(stuJson)为转换后的json字符串如下所示:
小结:
上面将json对象转换为字符串的方法为JSON.stringify(student),除此之外,js将对象转换为字符串的方法还有student.toJSONString();如果浏览器提示找不到toJSONString(),说明json包版本太低。
//测试js创建复杂的json数组对象,转换为json字符串
function test2(){
var jsonObj = new Array(); //声明一个json数组
var jsonObj1 = new Object(); //json数组中的第一个json对象
jsonObj1.name="张三";
jsonObj1.age="25";
var jsonObj2 = new Object(); //json数组中的第二个json对象
jsonObj2.name="李四";
jsonObj2.age="18";
//将两个json对象放入json数组中
jsonObj[0]=jsonObj1;
jsonObj[1]=jsonObj2;
alert(jsonObj); //弹出json对象;
alert(JSON.stringify(jsonObj));//弹出json字符串;
}
第1个alert(jsonObj)弹出json对象如下所示:
第二个alert(JSON.stringify(jsonObj))弹出json对象的字符串形式如下所示;
在js中迭代出复杂json对象中元素的方法可以用如下操作:
$.each(jsonObj,function(i,n){ //迭代json数组中的每一个对象
i++;
alert("第"+i+"个对象姓名为:"+n.name+",年龄为:"+n.age);
});
因为上面的json数组中共有两个对象,故结果如下所示:
二:将json字符串转换为json对象
JSON字符串转换为JSON对象可以使用eval('(' + str + ')')方法。如下所示:
//测试将json字符串转换为json对象
function test3(){
var jsonStr = '{"name":"张三","age":"21"}'; //json字符串;
alert(jsonStr); //1.弹出的为json字符串;
var jsonObj = eval('('+jsonStr+')'); //将json字符串转换为json对象
alert(jsonObj); //2.弹出的为json对象;
}
上面的alert(jsonStr)弹出的为还未转换之前的json字符串;
第二个alert(jsonObj)弹出的为字符串json数据通过eval()转换为json对象的对象: