一、JavaScript处理JSON
-
将js中的字符串、数组、对象转为Json字符串
var str = 'daidai'; var arr = ['daidai', 'yingying', 'anni']; var obj = { name: 'daidai', age: 21, sex: '男' }; var dict = { persion: [{ name: 'daidai', sex: '男', age: 21 }, { name: 'yingying', sex: '女', age: 21 }] } //使用函数JSON.stringify(object) JSON.stringify(str)---->"daidai" JSON.stringify(arr)---->["daidai","yingying","anni"] JSON.stringify(obj)---->{"persion":[{"name":"daidai","sex":"男","age":21},{"name":"yingying","sex":"女","age":21}]} JSON.stringify(dict)---->Array
-
将JSON字符串转为对象
1、JSON.parse(JSON字符串) 2、eval('('+JSON字符串+')')
-
将JSON字符串格式化输出
JSON.stringify(value[, replacer [, space]]) JSON.stringify() 方法,stringify还有个可选参数space,可以指定缩进用的空白字符串,用于美化输出(pretty-print); space参数是个数字,它代表有多少的空格;上限为10。该值若小于1,则意味着没有空格;如果该参数没有提供(或者为null)将没有空格。 var formatJsonStr=JSON.stringify(jsonObject,undefined, 2);
-
替换JSON数据中的某些字符
var jsonStr=jsonStr.replace(new RegExp('\\"',"gm"), '"' ); //上面的语法是将\\"替换成" 这里的gm是固定的,g表示global,m表示multiple:
-
遍历JSON对象和JSON数组
//遍历JSON对象使用对象名加.属性 var obj = { name: 'daidai', age: 21, sex: '男' }; console.log(obj.name) console.log(obj.age) console.log(obj.sex) //遍历JSON数组使用数组名加下标 var arr = ['daidai', 'yingying', 'anni']; console.log(arr[0] console.log(arr[1]) console.log(arr[2])
-
复杂JSON数据的处理
/** * 去掉 json中数组多余的项 */ function distinctJson(obj) { if(obj instanceof Array) { if(obj.length > 1) { //数组中有超过一个对象,删除第一个对象之后的所有对象 obj.splice(1, (obj.length - 1)); } distinctJson(obj[0]); } else if(obj instanceof Object) { for( var index in obj){ var jsonValue = obj[index]; distinctJson(jsonValue); } } }
-
实例(来自转载)
var jsonObject = { "action" : "add_user", "user" : "{name:\"张三\",age:\"16\",phones:[\"13412345678\"}", "family" : { "mom" : {"name":"张三妈妈","age":45}, "dad" : {"name":"张三爸爸","age":48} }, "classmate" : [ {"name":"李四","age":14}, {"name":"王五","age":15}, {"name":"小刘","age":16} ] };
(1)获取使用者add_user;
(2)遍历出用户的手机号;
(3)获取妈妈名字;
(4)添加,家人妹妹;
(5)遍历打印所有家人;
(6)查找同学王五年龄。<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1"> <title></title> <script type="text/javascript"> var jsonObject = { "action" : "add_user", "user" : "{name:\"张三\",age:\"16\",phones:[\"13412345678\",\"18812341234\"]}", "family" : { "mom" : {"name":"张三妈妈","age":45}, "dad" : {"name":"张三爸爸","age":48} }, "classmate" : [ {"name":"李四","age":14}, {"name":"王五","age":15}, {"name":"小刘","age":16} ] }; //(1)获取使用者add_user console.log("(1)获取使用者:", jsonObject.action ); //(2)遍历出用户的手机号 var userinfo = jsonObject.user; //console.log(typeof(userinfo)); //string var userobj = eval('('+userinfo+')'); //将json字符串,转为object var userphonearray = userobj.phones; for(var value of userphonearray){ console.log("(2)用户的手机号: ",value); } //(3)获取妈妈名字 console.log("(3)获取妈妈名字:",jsonObject.family.mom.name) //(4)添加,家人妹妹 jsonObject.family.sister={name:'妹妹',age:10}; console.log("(4)添加,家人妹妹:",jsonObject.family.sister) //(5)遍历打印所有家人 console.log("(5)遍历打印所有家人:") var familys = jsonObject.family; //遍历对象 //console.log(1234,familys["dad"]); //Object { name: "张三爸爸", age: 48 } Object.keys(familys).forEach(function(key){ console.log(key,familys[key]); }) //(6)查找同学王五年龄 var classmates = jsonObject.classmate; function fun(arrs,str){ for(var i=0; i<arrs.length; i++){ if(arrs[i].name === str){ return arrs[i].age; } } } var classage = fun(classmates,"王五"); console.log("(6)查找同学王五年龄:",classage); </script> </head> <body> </body> </html>