zoukankan      html  css  js  c++  java
  • JSON对象和JavaScript对象直接量的区别--不同之处

     JSON对象和JS对象直接量

    在工作当中,我们总是可以听到人说将数据转换为JSON对象,或者说把JSON对象转换为字符串之类的话,下面是关于JSON的具体说明。

     JSON对象并不是JavaScript对象字面量(Object Literals)

    很多人错误的将JSON认为是JavaScript当中的对象字面量(object Literals),原因非常简单,就是因为它们的语法是非常相似的,但是在ECMA中明确的说明了。JSON只是一种数据交互语言,只有我们将之用在string上下文的时候它才叫JSON。

    序列化与反序列化

    2个程序(或服务器、语言等)需要交互通信的时候,他们倾向于使用string字符串因为string在很多语言里解析的方式都差不多。复杂的数据结构经常需要用到,并且通过各种各样的中括号{},小括号(),叫括号<>和空格来组成,这个字符串仅仅是按照要求规范好的字符。

    为此,我们为了描述这些复杂的数据结构作为一个string字符串,制定了标准的规则和语法。JSON只是其中一种语法,它可以在string上下文里描述对象,数组,字符串,数字,布尔型和null,然后通过程序间传输,并且反序列化成所需要的格式。

    常见的数据流行交互格式有YAMLXML、和JSON都是常用的数据交互格式。

    字面量
    引用Mozilla Developer Center里的几句话,供大家参考:

    1. 他们是固定的值,不是变量,让你从“字面上”理解脚本。 (Literals)
    2. 字符串字面量是由双引号(")或单引号(')包围起来的零个或多个字符组成的。(Strings Literals)
    3. 对象字面量是由大括号({})括起来的零个或多个对象的属性名-值对。(Object Literals)

    什么时候会成为JSON

    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' }确实不合法的。所有属性名称和它的值都必须用双引号引住,不能使用单引号。

    JS当中的JSON对象

    目前,JSON对象已经成为了JS当中的一个内置对象,有两个静态的方法:JSON.parse和JSON.stringify。

    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 );
    

      

  • 相关阅读:
    Camera驱动开发 基于高通MSM8660 + Android 2.3
    http://lvzun.iteye.com/?show_full=true
    android编译要求安装jdk1.5的解决办法
    Android CTS one function
    Serializing Java objects to XML with WOX
    面向对象js javascript
    NVelocity练习
    NVelocity中的语法及常用指令
    Velocity Template Language (VTL).
    castle projects
  • 原文地址:https://www.cnblogs.com/zhaohongcheng/p/11124717.html
Copyright © 2011-2022 走看看