JSON.stringify和JSON.parse

标准的json,属性都要加双引号,不加或者单引号都会报错。

1、JSON.stringify 

 这个方法接收3个参数,该方法会过滤掉 值为undefinde的属性。

第一个是 json对象,第二个可以是数组或者函数,第三个参数如果是数字,代表缩进的空格字数,如果是字符串代表用该字符串代替空格进行缩进。(同时会自动换行)

如果属性有个toJSON,会优先按照这个属性的方法返回

		var book = {
                        title: "Professional JavaScript",
                        authors: [
                            "Nicholas C. Zakas"
                        ],
                        edition: 3,
                        year: 2011
                   };

       	      var jsonText = JSON.stringify(book, ["title", "edition"]);
	     //{"title":"Professional JavaScript","edition":3}
             var jsonText2 = JSON.stringify(book, function(key, value){
             switch(key){
                case "authors":
                    return value.join(",")
                 
                case "year":
                    return 5000;
                    
                case "edition":
                    return undefined;
                    
                default:
                    return value;
            }
        });
           //{"title":"Professional JavaScript","authors":"Nicholas C. Zakas","year":5000}
              var jsonText3 = JSON.stringify(book, null, 4);
           //{
            "title": "Professional JavaScript",
            "authors": [
            "Nicholas C. Zakas"
           ],
            "edition": 3,
            "year": 2011
           }

            var book = {
                       "title": "Professional JavaScript",
                        "authors": [
                            "Nicholas C. Zakas"
                        ],
                        edition: 3,
                        year: 2011,
                        toJSON: function(){
                            return 555;
                        }
                   };

        var jsonText = JSON.stringify(book);
        console.log(jsonText);
         //555

2.json.parse

这个方法接收2个参数,第一个参数是 json字符串,第二个参数是替换的方法。

		var book = {
                       "title": "Professional JavaScript",
                        "authors": [
                            "Nicholas C. Zakas"
                        ],
                        edition: 3,
                        year: 2011,
                        releaseDate: new Date(2011, 11, 1)
                   };

        var jsonText = JSON.stringify(book);
        alert(jsonText);
        
        var bookCopy = JSON.parse(jsonText, function(key, value){
            if (key == "releaseDate"){
                return undefined;
            } else {
                return value;
            }
        });
       console.log(bookCopy.releaseData.getFullYear());//2011

注:属性值 经过parse之后也是字符串。




阅读更多
个人分类: Js javascipt
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

JSON.stringify和JSON.parse

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭