JSON学习笔记

来源:互联网 发布:ibm云计算 编辑:程序博客网 时间:2024/04/30 14:31

今天简单学了下JSON,整理了笔记如下:


JSON:
  1. 概述:JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成(网络传输速度快)。
  2. 语法:
    1. JSON 语法是 JavaScript 对象表示语法的子集。
      1. 数据在名称/值对中
      2. 数据由逗号分隔
      3. 花括号保存对象
      4. 方括号保存数
    2. JSON名称/值对:
      1. JSON 数据的书写格式是:名称/值对;
      2. 名称/值对组合中的名称写在前面(在双引号中),值对写在后面(同样在双引号中),中间用冒号隔开:"firstName":"John" ,这很容易理解,等价于这条 JavaScript 语句: firstName="John"
    3. JSON值:
      1. 数字(整数或浮点数);
      2. 字符串(在双引号中);
      3. 逻辑值(true或false);
      4. 数组(在方括号中);
      5. 对象(在花括号中);
      6. 函数;
      7. null;
  3. 基础结构:
    1. 对象: 对象在js中表示为“{}”括起来的内容,数据结构为 {key:value,key:value,...}的键值对的结构,在面向对象的语言中,key为对象的属性,value为对应的属性值,所以很容易理 解,取值方法为 对象.key 获取属性值,这个属性值的类型可以是 数字、字符串、数组、对象几种。
    2. 数组: 数组在js中是中括号“[]”括起来的内容,数据结构为 ["java","javascript","vb",...],取值方式和所有语言中一样,使用索引获取,字段值的类型可以是 数字、字符串、数组、对象几种。
    3.  经过对象、数组2种结构就可以组合成复杂的数据结构了。
  4. 示例:
    1. 名称/值对: {"firstName":"Brett"}
    2. 数组:
      {
      "people":[
      {"firstName":"Brett","lastName":"McLaughlin","email":"aaaa"},
      {"firstName":"Jason","lastName":"Hunter","email":"bbbb"},
      {"firstName":"Elliotte","lastName":"Harold","email":"cccc"}
      ]
      }
    3. 对象:
      {"programmers":[
      {"firstName":"Brett","lastName":"McLaughlin","email":"aaaa"},
      {"firstName":"Jason","lastName":"Hunter","email":"bbbb"},
      {"firstName":"Elliotte","lastName":"Harold","email":"cccc"}
      ],
      "authors":[
      {"firstName":"Isaac","lastName":"Asimov","genre":"sciencefiction"},
      {"firstName":"Tad","lastName":"Williams","genre":"fantasy"},
      {"firstName":"Frank","lastName":"Peretti","genre":"christianfiction"}
      ]
      }
  5. 格式应用:
    1. 赋值给变量:
      var people={"programmers":[{"firstName":"Brett","lastName":"McLaughlin","email":"aaaa"},
      {"firstName":"Jason","lastName":"Hunter","email":"bbbb"},
      {"firstName":"Elliotte","lastName":"Harold","email":"cccc"}
      ]
      }
    2. 访问数据: people.programmers[0].lastName;
    3. 修改数据:people.musicians[1].lastName="Rachmaninov";
    4. 换回字符串; 最终结论是,如果要处理大量 JavaScript 对象,那么 JSON 是一个好选择,这样就可以轻松地将数据转换为可以在请求中发送给服务器端程序的格式。
  6. 概念比较:
    1. 和XML的比较:
      1.  JSON与XML最大的不同在于XML是一个完整的标记语言,而JSON不是。这使得XML在程序判读上需要比较多的功夫。主要的原因在于XML的设计理念与JSON不同。XML利用标记语言的特性提供了绝佳的延展性(如XPath),在数据存储,扩展及高级检索方面具备对JSON的优势,而JSON则由于比XML更加小巧,以及浏览器的内建快速解析支持,使得其更适用于网络数据传输领域。
      2. 实例比较:
        1. 用XML表示中国部分省市数据如下:
          <?xmlversion="1.0"encoding="utf-8"?>
          <country>
          <name>中国</name>
          <province>
          <name>黑龙江</name>
          <cities>
          <city>哈尔滨</city>
          <city>大庆</city>
          </cities>
          </province>
          <province>
          <name>广东</name>
          <cities>
          <city>广州</city>
          <city>深圳</city>
          <city>珠海</city>
          </cities>
          </province>
          <province>
          <name>台湾</name>
          <cities>
          <city>台北</city>
          <city>高雄</city>
          </cities>
          </province>
          <province>
          <name>新疆</name>
          <cities>
          <city>乌鲁木齐</city>
          </cities>
          </province>
          </country>
        2. 用JSON表示如下:
          {
          "name":"中国",
          "province":[
          {
          "name":"黑龙江",
          "cities":{
          "city":["哈尔滨","大庆"]
          }
          },
          {
          "name":"广东",
          "cities":{
          "city":["广州","深圳","珠海"]
          }
          },
          {
          "name":"台湾",
          "cities":{
          "city":["台北","高雄"]
          }
          },
          {
          "name":"新疆",
          "cities":{
          "city":["乌鲁木齐"]
          }
          }
          ]
          }
        3. 编码的可读性,xml有明显的优势,毕竟人类的语言更贴近这样的说明结构。json读起来更像一个数据块,读起来就比较费解了。不过,我们读起来费解的语言,恰恰是适合机器阅读,所以通过json的索引.province[0].name就能够读取“黑龙江”这个值。
          编码的手写难度来说,xml还是舒服一些,好读当然就好写。不过写出来的字符JSON就明显少很多。去掉空白制表以及换行的话,JSON就是密密麻麻的有用数据,而xml却包含很多重复的标记字符
  7. 参考文献:
    1. 百度百科:http://baike.baidu.com/link?url=vJ3CNoXXScpx4nhGbi8h6zIRHc-Boe_JlU0BpiTK6DzKrGloH5xVs1ILRcz_UwVn5O6bmc9HgH5lTqNO7QD5CK
    2. 维基百科:http://zh.wikipedia.org/wiki/JSON

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 美图m6s开不了机怎么办 美图手机m6进水怎么办 美图t8摔黑屏怎么办 美图屏幕点不动怎么办 朗动钥匙丢了怎么办 深圳小汽车摇号中签了怎么办 深圳摇号审核通过后怎么办 京东过保修期了怎么办 买的商业预付卡怎么办 壹钱包预付卡金额不足怎么办 美发店换老板原来预付卡怎么办 超市预付卡现超市停业怎么办? 利群购物卡丢了怎么办 利群金卡丢了怎么办 坐飞机洗漱用品超过规定怎么办 请律师团了解后怎么办 三星s9开不了机怎么办 三星手机开不了机了怎么办 安卓手机音响进水了怎么办 音响不读u盘怎么办 虎牌水壶显示f2怎么办 海尔冰箱门关不严没吸力怎么办 忘记京东金融账号怎么办 京东账号手机号已停用怎么办 京东账户忘了怎么办 京东登录名忘了怎么办? 京东已经发货了怎么办 苹果7p黑亮掉漆怎么办 淘宝卖家不肯退运费怎么办 健身付款收据丢了怎么办 收据丢了怎么办能退款 苹果售后不承认基带问题怎么办 电话卡欠费了不用了怎么办 软件移不到sd卡怎么办 手机显示sd卡受损怎么办 美的冰箱出现e6怎么办 美的冰箱显示e6怎么办 冰箱电脑板坏了怎么办 笔记本网线接口坏了怎么办 蓝p吃了一片 怎么办 sd卡上锁了忘记密码怎么办