//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);
时间: 2024-11-08 09:52:40