zoukankan      html  css  js  c++  java
  • 理解JSON对象:JSON.parse、 JSON.stringify

    何时是JSON,何时不是JSON?

    JSON就是一个有特殊规则的字符串,按照这个规则我们就可以把这个字符串解析成JS对象。

    JSON是设计成描述数据交换格式的,他也有自己的语法,这个语法是JavaScript的一个子集。
    { "prop": "val" } 这样的声明有可能是JavaScript对象字面量也有可能是JSON字符串,取决于什么上下文使用它,如果是用在string上下文(用单引号或双引号引住,或者从text文件读取)的话,那它就是JSON字符串,如果是用在对象字面量上下文中,那它就是对象字面量。

    // 这是JSON字符串
    var foo = '{ "prop": "val" }';

    // 这是对象字面量
    var bar = { "prop": "val" };

    而且要注意,JSON有非常严格的语法,在string上下文里{ "prop": "val" } 是个合法的JSON,但{ prop: "val" }和{ 'prop': 'val' }确实不合法的。所有属性名称和它的值都必须用双引号引住,不能使用单引号。另外,即便你用了转义以后的单引号也是不合法的,详细的语法规则可以到这里查看

    真正的JSON对象

    开头已经提到,对象字面量不是JSON对象,但是有真正的JSON对象。但是两者完全不一样概念,在新版的浏览器里JSON对象已经被原生的内置对象了,目前有2个静态方法:JSON.parse用来将JSON字符串反序列化成对象,JSON.stringify用来将对象序列化成JSON字符串。老版本的浏览器不支持这个对象,但你可以通过json2.js来实现同样的功能。

    如果还不理解,别担心,参考一下的例子就知道了:

    // 这是JSON字符串,比如从AJAX获取字符串信息
    var my_json_string = '{ "prop": "val" }';

    // 将字符串反序列化成对象
    var my_obj = JSON.parse( my_json_string );

    alert( my_obj.prop == 'val' ); // 提示 true, 和想象的一样!

    // 将对象序列化成JSON字符串
    var my_other_json_string = JSON.stringify( my_obj );
  • 相关阅读:
    使用TestStack.White进行Windows UI的自动化测试
    基于IDEA的JavaWeb开发环境搭建
    hfish 集群蜜罐搭建
    HFish开源蜜罐搭建
    redis实现查找附近商户信息功能
    WIN10 HYPERV 1503
    RPC
    推荐一个聚合搜索引擎提高学习工作效率
    RocketMQ原理分析&场景问题
    《高性能利器》--异步调用实现原理详解!
  • 原文地址:https://www.cnblogs.com/yzhihao/p/6378006.html
Copyright © 2011-2022 走看看