JavaScript的对象与Json
Posted CoverSky
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript的对象与Json相关的知识,希望对你有一定的参考价值。
JSON有非常严格的语法,在string上下文里{ "prop": "val" } 是个合法的JSON,但{ prop: "val" }和{ \'prop\': \'val\' }确实不合法的。所有属性名称和它的值都必须用双引号引住,不能使用单引号。在string上下文里使用带有大括号的javascript对象,那它就是JSON字符串,而如果在对象字面量上下文里使用的话,那它就是对象字面量。
1 JSON.stringify(true); // \'true\' 2 3 JSON.stringify(\'foo\'); // \'"foo"\' 4 5 JSON.stringify([1, \'false\', false]); // \'[1,"false",false]\' 6 7 JSON.stringify({ x: 5 }); // \'{"x":5}\' 8 9 10 11 JSON.stringify(new Date(2006, 0, 2, 15, 4, 5)) // \'"2006-01-02T15:04:05.000Z"\' 12 13 14 15 JSON.stringify({ x: 5, y: 6 });// \'{"x":5,"y":6}\' or \'{"y":6,"x":5}\' 16 17 JSON.stringify([new Number(1), new String(\'false\'), new Boolean(false)]);// \'[1,"false",false]\' 18 19 20 21 JSON.stringify({ x: [10, undefined, function(){}, Symbol(\'\')] }); // \'{"x":[10,null,null,null]}\' 22 23 // Symbols: 24 25 JSON.stringify({ x: undefined, y: Object, z: Symbol(\'\') });// \'{}\' 26 27 JSON.stringify({ [Symbol(\'foo\')]: \'foo\' });// \'{}\' 28 29 JSON.stringify({ [Symbol.for(\'foo\')]: \'foo\' }, [Symbol.for(\'foo\')]);// \'{}\' 30 31 JSON.stringify({ [Symbol.for(\'foo\')]: \'foo\' }, function(k, v) { 32 33 if (typeof k === \'symbol\') { 34 35 return \'a symbol\'; 36 37 }});// \'{}\' 38 39 // Non-enumerable properties: 40 41 JSON.stringify( Object.create(null, { x: { value: \'x\', enumerable: false }, y: { value: \'y\', enumerable: true } }) );// \'{"y":"y"}\' 42 43 function replacer(key, value) { 44 45 // Filtering out properties 46 47 if (typeof value === "string") { 48 49 return undefined; 50 51 } 52 53 return value;} 54 55 var foo = {foundation: "Mozilla", model: "box", week: 45, transport: "car", month: 7}; 56 57 JSON.stringify(foo, replacer);// \'{"week":45,"month":7}\' 58 59 JSON.stringify(foo, [\'week\', \'month\']); // \'{"week":45,"month":7}\', only keep "week" and "month" properties 60 61
如果字符串化对象有一个属性叫tojson其值是一个函数,然后tojson()方法自定义JSON字符串化所带来的行为,而不是被序列化的对象,返回的值将被序列化tojson()方法调用时。例如
1 var obj = { 2 3 foo: \'foo\', 4 5 toJSON: function() { 6 7 return \'bar\'; 8 9 }}; 10 11 JSON.stringify(obj); // \'"bar"\' 12 13 JSON.stringify({ x: obj }); // \'{"x":"bar"}\'
5:JSON.parse()
JSON.parse(\'{}\'); // {}
JSON.parse(\'true\'); // true
JSON.parse(\'"foo"\'); // "foo"
JSON.parse(\'[1, 5, "false"]\'); // [1, 5, "false"]
JSON.parse(\'null\'); // null
以上是关于JavaScript的对象与Json的主要内容,如果未能解决你的问题,请参考以下文章
VSCode自定义代码片段12——JavaScript的Promise对象
VSCode自定义代码片段12——JavaScript的Promise对象
解析:JSON 文本没有以数组或对象开头,并且允许未设置片段的选项
错误代码:错误域 = NSCocoaErrorDomain 代码 = 3840“JSON 文本没有以数组或对象和允许未设置片段的选项开头。”