天行健, 君子以自强不息
Sunny's Blog
Title

json的stringify和parse

ajax从后台取回的json数据是一个object,所以在success返回的data是可以直接取得他的属性的。stringify可以将object序列化,并且他还有筛选,改值等功能。parse可以将序列化的字符串解析成object,同样的他也有改值的功能

                    //我测试用的json串
                    {
                        "title": "test json",
                        "author": [
                            "sunny", "stella"
                        ],
                        "edition": 3,
                        "year": 2014,
                        "response": true
                    }
                

                    //js代码及结果
                        $.ajax({
                            url: './test.json',
                            type: 'POST',
                            dataType: 'json',
                            data: {name: 'sunny'},
                            success: function(data){
                                var book = data;//data传过来的是object
                                console.log(book); //object

                                //序列化json成字符串
                                var jsonstringify = JSON.stringify(book);
                                console.log(jsonstringify);
                                //{"title":"test json","author":["sunny","stella"],"edition":3,"year":2014,"response":true} 
                                $(".jsontext").text(jsonstringify);
                                //筛选字符串,只要author和year
                                var jsonchoose = JSON.stringify(book,["author","year"]); 
                                console.log(jsonchoose);
                                //{"author":["sunny","stella"],"year":2014} 

                                //可以在序列化的同时,改变其key的value方法,这里面相当于有个each
                                var jsonchoose1 = JSON.stringify(book,function(key, value){
                                    if ( key == "author") {
                                        value.push("smile");
                                        return value;
                                    }else if ( key == "year"){
                                        return 2013;
                                    }else{
                                        return value;
                                    };
                                });
                                console.log(jsonchoose1);
                                //{"title":"test json","author":["sunny","stella","smile"],"edition":3,"year":2013,"response":true} 

                                //为了好看,还可以缩进个格式
                                var jsonchoose2 = JSON.stringify(book,null,4);
                                console.log(jsonchoose2);
                                //console可以看出来,但是页面是没有的
                                $(".jsontext").text(jsonchoose2);
                                
                                //将序列化的字符串解析为对象
                                console.log(book.year); //2014
                                console.log(jsonchoose2.year);//undefined
                                var bookcopy = JSON.parse(jsonchoose2);
                                console.log(bookcopy);
                                //在parse的同时,改变其key的value方法,这里面相当于有个each
                                var bookcopy2 = JSON.parse(jsonchoose2, function(key, value){
                                    if ( key == "author") {
                                        value.push("tiger");
                                        return value;
                                    }else if ( key == "year"){
                                        return 2015;
                                    }else{
                                        return value;
                                    };
                                });
                                console.log(bookcopy2);

                            }
                        
                        });

            

地势坤,君子以厚德载物