JSON——李炎灰js笔记

 

//JSON 的简单值
10
null
true
"fc"


//对象表示
var box = {
    name : 'fc',
    age : 25
};


//JSON对象表示
{
    "name" : "fc",
    "age" : "25"
}

'{"name" : "fc","age" : "25"}'
//PS:JSON说白了就是一个字符串,所以任何表示,都应该加上引号表示字符串。




// 普通数组
var box = [100, 'fc', true];

// JSON数组
'[100, "fc", true]'
// PS:JSON对象和数组比普通对象和数组,少了分号,少了变量赋值,而且本身应该是字符串表示。



// 最常用的JSON结构
[
    {
        "name" : "fc",
        "age" : 25
    },
    {
        "name" : "lq",
        "age" : 25
    },
    {
        "name" : "hehe",
        "age" : 25
    }
]



// 模拟加载JSON数据字符串的过程, var json = load('demo.json');
// 把JSON字符串加载进来并且赋值给json变量。

var json = [{"title":"a","num":1},{"title":"b","num":2}];
var json1 = '[{"title":"a","num":1},{"title":"b","num":2}]';

console.log(json);  //[Object, Object]
console.log(json1); //[{"title":"a","num":1},{"title":"b","num":2}]
console.log(typeof json1);  //string




// 解析和序列化
// 如果是载入的JSON文件,我们需要对其进行使用,那么就必须对JSON字符串解析成原生的JavaScript值。当然,如果是原生的JavaScript对象或数组,也可以转换成JSON字符串。
// 对于将JSON字符串解析为JavaScript原生值,早期采用的是eval()函数。但这种方法既不安全,可能会执行一些恶意代码。
var json = '[{"title":"a","num":1},{"title":"b","num":2}]';
var box = eval(json);
console.log(box);   //[Object, Object]
console.log(box[1].title);  //b



var box = [
    {
        title : 'a',
        num : 1,
        height : 122
    },
    {
        title : 'b',
        num : 2,
        height : 133
    }
]

var json = JSON.stringify(box);
console.log(json);  //[{"title":"a","num":1,"height":122},{"title":"b","num":2,"height":133}]



var box = [
    {
        title : 'a',
        num : 1,
        height : 122
    },
    {
        title : 'b',
        num : 2,
        height : 133
    }
]

var json = JSON.stringify(box,['num', 'height']);
console.log(json);  //[{"num":1,"height":122},{"num":2,"height":133}]



var box = [
    {
        title : 'a',
        num : 1,
        height : 122
    },
    {
        title : 'b',
        num : 2,
        height : 133
    }
]

var json = JSON.stringify(box, function (key, value) {
    if(key === 'title'){
        return 'Mr.' + value;
    } else {
        return value;
    }
});
console.log(json);  //[{"title":"Mr.a","num":1,"height":122},{"title":"Mr.b","num":2,"height":133}]

// PS:火狐3.5和3.6在最初支持JSON的时候stringify方法有个小bug,执行funxtion会出错。


var box = [
    {
        title : 'a',
        num : 1,
        height : 122
    },
    {
        title : 'b',
        num : 2,
        height : 133
    }
]

var json = JSON.stringify(box,['title', 'num'], 4);
var json2 = JSON.stringify(box,['title', 'num'], '--');
console.log(json);
// [
//     {
//         "title": "a",
//         "num": 1
//     },
//     {
//         "title": "b",
//         "num": 2
//     }
// ]

console.log(json2);
// [
// --{
// ----"title": "a",
// ----"num": 1
// --},
// --{
// ----"title": "b",
// ----"num": 2
// --}
// ]



var box = [
    {
        title : 'a',
        num : 1,
        height : 122
    },
    {
        title : 'b',
        num : 2,
        height : 133
    }
]

var json = JSON.stringify(box,null , 4);

console.log(json);
// [
//     {
//         "title": "a",
//         "num": 1,
//         "height": 122
//     },
//     {
//         "title": "b",
//         "num": 2,
//         "height": 133
//     }
// ]




var box = [
    {
        title : 'a',
        num : 1,
        height : 122,
        toJSON : function () {
            return this.title;
        }
    },
    {
        title : 'b',
        num : 2,
        height : 133,
        toJSON : function () {
            return this.title;
        }
    }
]

var json = JSON.stringify(box);

console.log(json);  //["a","b"]

// JSON序列化也有执行顺序,首先执行toJSON()方法;如果应用了第二个参数,则执行这个方法。然后执行序列化过程。比如将键值对组成合法的JSON字符串,比如加上双引号,如果提供了缩进,在执行缩进操作。



var json = '[{"title":"a","num":1},{"title":"b","num":2}]';
var box = JSON.parse(json)
console.log(json);

 

posted @ 2015-07-29 10:17  白小虫  阅读(311)  评论(0编辑  收藏  举报