zoukankan      html  css  js  c++  java
  • JSON

            JSON的全称是”JavaScript Object Notation”,就是一个有特殊规则的字符串,按照这个规则我们就可以把这个字符串解析成JS对象,是一种基于文本,独立于语言的轻量级数据交换格式

            XML也是一种数据交换格式,为什么JSON更适合JS使用呢?

            因为XML在JS中处理XML不方便,同时XML标记比数据多,JSON无附加的标记,在JS中可作为对象处理

           

            主要总结有:

                  1. JSON的两种结构形式:对象和数组;

                  2. 字符串,JSON字符串,JSON对象区别;

                  3. JSON对象与JSON字符串相互转换;

                  4. 对象字面量与JSON的区别;

     

            1. JSON的两种结构形式:对象和数组;

                  对象结构

                                 1.  以”{”大括号开始,以”}”大括号结束;

                                 2.  中间部分由零个或多个以”,逗号”分隔的”key(关键字)/value(值)”对构成;

                                 3.  关键字和值之间以”:”分隔;

                                 4.  所有属性名称和它的值都必须用双引号引住,不能使用单引号;

      

    //JSON对象
    Json = {"username":"James", "password":"23"};

     

                 数组结构:数组是值(value)的有序集合。一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间运用 “,”(逗号)分隔。

                                 1.  以“[”(左中括号)开始,“]”(右中括号)结束;

                                 2.  中间部分由零个或多个以”,逗号”分隔的JSON对象格式数据构成;

    //JSON数组格式
    Json = [ {"username":"James", "password":"23"}, {"username":"Oven", "password":"2"} ];

                   要求:关键字是字符串,而值可以是字符串,数值,true,false,null,对象或数组;

                         要求字符集必须是Unicode;

                2. 字符串,JSON字符串,JSON对象区别

                  字符串:指使用“”双引号或’’单引号包括的字符;
                  json字符串:实质还是字符串,指的是符合json格式要求的js字符串,就是用双引号或单引号包括的json对象;
                  json对象:指符合json格式要求的js对象;

    //这是一个字符串
     str = "James";
    
    //这是一个json字符串,本质还是字符串,需要用单引号或双引号包括起来
    Json = “{"username":"James", "password":"23"}” ;
    
    //这是一个json对象
    Json = {"username":"James", "password":"23"};

                 3. JSON对象与JSON字符串 相互转换

                 在新版的浏览器里JSON对象已经被原生的内置对象了。

                 目前有2个静态方法:

                          JSON.parse用来将JSON字符串反序列化成对象;

                          JSON.stringify用来将对象序列化成JSON字符串;

                  非标准的IE不支持该对象,可以通过json2.js来实现同样的功能。将该文件下载到项目并引入。

    // 这是JSON字符串,比如从AJAX获取字符串信息
    var my_json_string = '{ "username": "Jamesl" }';
     
    // 将字符串反序列化成对象
    var my_obj = JSON.parse( my_json_string );
     
    alert( my_obj.prop == 'Jamesl' ); //  提示 true, 和想象的一样!
     
    // 将对象序列化成JSON字符串
    var my_other_json_string = JSON.stringify( my_obj );

                4. 对象字面量与JSON的区别;

                  

                   主要区别:

                            1. JSON语法格式要求更严格,所有属性名称和它的值都必须用双引号引住,不能使用单引号,而对象字面量可以由单引号或双引号包括;

                            2. 如果两者都是用双引号包括时,利用上下文关系来区分,{ "prop": "val" } 这样的声明有可能是JavaScript对象字面量也有可能是JSON字符串,取决于什么上下文使用它,如果是用在string上下文(用单引号或双引号引住,或者从text文件读取)的话,那它就是JSON字符串,如果是用在对象字面量上下文中,那它就是对象字面量。

    // 这是JSON字符串
    var foo = '{ "prop": "val" }';
     
    // 这是对象字面量
    var bar = { "prop": "val" };

                详情请参见汤姆大叔文章:深入理解JavaScript系列(9):根本没有“JSON对象”这回事!

  • 相关阅读:
    CMP指令(转)
    步进电机简介
    IDE改为AHCI后系统无法启动的解决办法
    无线网络(WLAN)常见加密方式介绍
    51单片机学习记录——数码管动态显示
    DEDECMS 调用上级栏目标题
    微信小程序开发系列(二)小程序的全局文件
    微信小程序开发系列(一)小程序开发初体验
    python+unittest日志和报告输出模块
    pip更换国内镜像源
  • 原文地址:https://www.cnblogs.com/Peng2014/p/4686269.html
Copyright © 2011-2022 走看看