• 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

     

  • 相关阅读:
    BubbleGum96 开箱杂谈与软件资源
    Intel Edision —— 从SSH无法连接到systemd
    Intel Edision —— 开发环境选择一贴通
    Intel Edision —— 上电、基本设置与系统初探
    使用RPi-Monitor监控、统计Guitar的运行状态
    吃我一记咸鱼突刺——使用板载RTC定时开机
    Intel Edison —— 控制GPIO接口,网页显示传感器数值
    docker on UP Board
    Android源码分析--CircleImageView 源码详解
    如何自定义一个优雅的ContentProvider
  • 原文地址:https://www.cnblogs.com/coversky/p/6289163.html
Copyright © 2020-2023  润新知