前后端处理JSON数据-笔记

一、JavaScript处理JSON
  1. 将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
    
  2. 将JSON字符串转为对象

    1JSON.parse(JSON字符串)
    2、eval('('+JSON字符串+')')
    
  3. 将JSON字符串格式化输出

    JSON.stringify(value[, replacer [, space]])
    JSON.stringify() 方法,stringify还有个可选参数space,可以指定缩进用的空白字符串,用于美化输出(pretty-print);
    space参数是个数字,它代表有多少的空格;上限为10。该值若小于1,则意味着没有空格;如果该参数没有提供(或者为null)将没有空格。
    
    var formatJsonStr=JSON.stringify(jsonObject,undefined, 2);
    
  4. 替换JSON数据中的某些字符

    var jsonStr=jsonStr.replace(new RegExp('\\"',"gm"), '"' );
    //上面的语法是将\\"替换成"
    这里的gm是固定的,g表示global,m表示multiple:
    
  5. 遍历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])
    
  6. 复杂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);
            }
      }
    }
    
  7. 实例(来自转载)

    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>
    
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值