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"}\'

 

 

5JSON.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 文本没有以数组或对象和允许未设置片段的选项开头。”

如何从片段中的 JSON 响应中的对象获取数据

Javascript - 使用 HTML 片段通过电子邮件发送 JSON 输出