关闭

JSON.stringify和JSON.parse

209人阅读 评论(0) 收藏 举报
分类:

标准的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之后也是字符串。




0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:21203次
    • 积分:719
    • 等级:
    • 排名:千里之外
    • 原创:45篇
    • 转载:21篇
    • 译文:5篇
    • 评论:1条
    文章分类
    最新评论