1.JSON字符串转换为JSON对象
JSON字符串:
var str1 = '{ "name": "cxh", "sex": "man" }';
JSON对象:
var str2 = { "name": "cxh", "sex": "man" };
要使用上面的str1,必须使用下面的方法先转化为JSON对象:
//由JSON字符串转换为JSON对象
var obj = eval(\'(\' + str + \')\');
或者
var obj = str.parseJSON(); //由JSON字符串转换为JSON对象
或者
var obj = JSON.parse(str); //由JSON字符串转换为JSON对象
然后,就可以这样读取:
Alert(obj.name);
Alert(obj.sex);
特别注意:如果obj本来就是一个JSON对象,那么使用eval()函数转换后(哪怕是多次转换)还是JSON对象,但是使用parseJSON()函数处理后会有问题(抛出语法异常)。
2. 将json对象转成字符串
最近写了一个表单里面要存的一个字段是使用json字符串格式存的,从数据库里面取下来的时候用的倒是挺爽,可是要存就有点麻烦了,当时一下子没有想到,后来去百度了一下,结果搜到的是用正则来拼接的,感觉挺麻烦的。随后跟别人讨论的过程中突然就想到了这样的办法,方法本身挺简单的,就只是网上搜不到,一下子也没想到罢了,这里做个记录,各位看着觉得简单也就见笑了。
< >
var jsonObj = {
\"qq\":\"321321321\",
\"MSN\":\"asdf@asdf.com\",
\"Tel\":\"0852-8888888\"
};
var jStr = \"{ \";
for(var item in jsonObj){
jStr += \"\'\"+item+\"\':\'\"+jsonObj[item]+\"\',\";
}
jStr += \" }\";
alert(jStr);
</ >
除此之外还可以使用toJSONString()或者全局方法JSON.stringify()将JSON对象转化为JSON字符串。
例如:
var last=obj.toJSONString(); //将JSON对象转化为JSON字符
或者
var last=JSON.stringify(obj); //将JSON对象转化为JSON字符
3.json与数组互转
//数组转json串
var arr = [1,2,3, { a : 1 } ];
JSON.stringify( arr );
//json字符串转数组
var jsonStr = \'[1,2,3,{\"a\":1}]\';
JSON.parse( jsonStr );
4、遍历JSON对象和JSON数组
1、遍历JSON对象代码如下:
var packJson = {\"name\":\"Liza\", \"password\":\"123\"} ;
for(var k in packJson ){//遍历packJson 对象的每个key/value对,k为key
alert(k + \" \" + packJson[k]);
}
2、遍历JSON数组代码如下:
var packJson = [{\"name\":\"Liza\", \"password\":\"123\"}, {\"name\":\"Mike\", \"password\":\"456\"}];
for(var i in packJson){//遍历packJson 数组时,i为索引
alert(packJson[i].name + \" \" + packJson[i].password);
}
5.将两个JSON对象组装到一个里面
函数如下:
//targetJson 目标JSON,packJson 被组装JSON
function addGroupJson(targetJson, packJson){
if(targetJson && packJson){
for(var p in packJson){
targetJson[p] = packJson[p];
}
}
}
用法如下:
var json1 = {\"name\":\"nikita\"};
var json2 = {\"password\":\"1111\"};
addGroupJson(json1, json2);
alert(json2str(json1));
6.js递归处理json
< >
$(document).ready(function() {
var jsonStr = \"{\'name\': \'cxh\', \'sex\': \'man\', \'age\': 1}\";
var obj = eval(\'(\' + jsonStr + \')\');
var traverseJson=\"{ \'name\': \'cxh\', \'sex\': \'man\', \'age\': 1},解析结果:</br>\";
for(var a in obj) {
traverseJson += \"key: \" + a +\",value: \" + obj[a]+\" </br> \";
}
$(\"#traverseJson\").html(traverseJson);
var arrayStr = [{\"name\":\"运维管理\",\"tId\":\"roleMenu0_1\",\"children\":[{\"name\":\"权限管理\",\"tId\":\"roleMenu0_2\",\"children\":[{\"name\":\"角色管理\",\"tId\":\"roleMenu0_3\"},{\"name\":\"用户管理\",\"tId\":\"roleMenu0_4\"}]},{\"name\":\"菜单分配\",\"tId\":\"roleMenu0_5\"}]}];
var str = \"\";
f(arrayStr, str);
});
function f(array, str) {
str += \"--\";
for (var i = 0; i < array.length; i++) {
var = array[i];
if ( .children) {
$(\"#traverseArray\").append(str + .name +\" </br> \");
f( .children, str);
} else {
$(\"#traverseArray\").append(str + .name +\" </br> \");
}
}
}
</ >
7.在 操作JSON对象,增加 删除 修改
< type=\"text/ \">
var jsonObj2 = { teacher: [
{ name: \"jordan\", sex: \"m\", age: \"40\" },
{ name: \"bryant\", sex: \"m\", age: \"28\" },
{ name: \"McGrady\", sex: \"m\", age: \"27\" }
]};
var jsonObj2New = {};
$(\"#btn\").click(function () {
//invoke the update
updateData(\"jordan\");
var persons = jsonObj2.teacher;
for (var i = 0; i < persons.length; i++) {
var cur_person = persons[i];
alert(cur_person.sex);
}
//invoke the delete
deleteData(\"jordan\");
var persons = jsonObj2.teacher;
for (var i = 0; i < persons.length; i++) {
var cur_person = persons[i];
alert(cur_person.sex);
}
//push
var temp = { name: \"kenny\", sex: \"m\", age: \"25\" };
jsonObj2.teacher.push(temp);
var persons = jsonObj2.teacher;
for (var i = 0; i < persons.length; i++) {
var cur_person = persons[i];
alert(cur_person.name);
}
});
function updateData(name) {
var persons = jsonObj2.teacher;
//alert(name);
for (var i = 0; i < persons.length; i++) {
var cur_person = persons[i];
if (cur_person.name == name) {
persons[i].sex = \"f\";
}
}
}
function deleteData(name) {
var persons = jsonObj2.teacher;
//alert(name);
for (var i = 0; i < persons.length; i++) {
var cur_person = persons[i];
if (cur_person.name == name) {
jsonObj2.teacher.splice(i, 1);
}
}
}
</ > 继续阅读与本文标签相同的文章
-
5G套餐曝光遭“吐槽”,iphone11受追捧,导致苹果11销量比较高
2026-05-14栏目: 教程
-
为什么修电脑的叫自己不要杀毒和清理垃圾?
2026-05-14栏目: 教程
-
当水乡建筑遇上机器人,成就乌镇又一网红景点
2026-05-14栏目: 教程
-
惊险!手刹失灵,郴州一货车开启“无人驾驶”模式……
2026-05-14栏目: 教程
-
华为继鸿蒙之后,又推出车载系统,有望迈上新台阶
2026-05-14栏目: 教程
