0%

12

自动摘要: 相比于XML,JSON格式最大的优点是易于人的阅读和编写,通常不需要特殊的工具,就能读懂和修改,是一种轻量级的数据交换格式。JSON文件都是被包裹在一个大括号中{},通过keyvalue的方式来 ……..

相比于XML ,JSON格式最大的优点是易于人的阅读和编写,通常不需要特殊的工具,就能读懂和修改,是一种轻量级的数据交换格式。JSON文件都是被包裹在一个大括号中 {},通过key-value的方式来表达数据。JSON的值只能是以下几种数据格式:

  1. 数字,包含浮点数和整数
  2. 字符串,需要包裹在双引号中
  3. Bool值,true 或者 false
  4. 数组,需要包裹在方括号中 []
  5. 对象,需要包裹在大括号中 {}
  6. Null

其他任何格式都会触发报错,例如 JavaScript 中的 undefined。JSON不支持注释

  1. JSON指的是JavaScript对象表示法(JavaScript Object Notation)

  2. JSON独立于语言:JSON使用JavaScript语法描述数据对象。JSON解析器和JSON库支持许多不同的编程语言。

  3. JSON和XML比较

    1. 相同之处
      1. JSON纯文本
      2. JSON具有“自我描述性”(人类可读)
      3. JSON具有层级结构(值中存在值)
      4. JSON可通过JavaScript进行解析
      5. JSON数据可通过AJAX进行传输
    2. 不同之处
      1. 没有结束标签
      2. 更短
      3. 读写的速度更快
      4. 能够使用内建的JavaScript eval()方法进行解析
      5. 使用数组
      6. 不使用保留字
    3. 最大的区别:XML需要使用XML解析器来解析,JSON可以使用标准的JavaScript函数解析。JSON.parse(): 将一个JSON字符串转换为JavaScript对象。JSON.stringify(): 将JavaScript值转换为JSON字符串
  4. JSON语法

    1. 数据在名称/值对中
    2. 数据由逗号,分割
    3. 使用斜杆\来转义字符
    4. 大括号{}保存对象
    5. 中括号[]保存数组,数组可以包含多个对象
    6. JSON文件的文件类型是.json,JSON文本的MIME类型是application/json
    7. MIME类型是描述信息内容类型的标准,用来表示文档、文件或字节流的性质和格式。MIME信息能包含文本、图像、音频、视频以及其他应用程序专用的数据
  5. JSON对象

    1. 对象语法
      1. 大括号{};
      2. 对象可以包含多个key/value(键/值)对
      3. key必须是字符串,value可以是合法的JSON数据类型(字符串、数字、对象、数组、布尔值、null)
      4. key和value中使用冒号:分割
      5. 每个key/value对使用逗号,分割
    2. 访问对象值(使用.或使用中括号[])
      1. myObj = {“name”:”runoob”, “alexa”:10000, “site”:null}; x = myObj.name;
      2. myObj = {“name”:”runoob”, “alexa”:10000, “site”:null}; x = myObj[“name”];
    3. 循环对象(for-in循环)
      1. varmyObj = {“name”:”runoob”, “alexa”:10000, “site”:null}; for(x in myObj){document.getElementById(“demo”).innerHTML += x + “
        “; }
    4. 删除对象属性
      1. 使用delete关键字删除:delete myObj.sites.site1;
  6. JSON数组

    1. 数组作为JSON对象,JSON数组在中括号中书写

    2. 通过使用索引值访问数组

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      myObj = {
      "name":"网站",
      "num":3,
      "sites":[ "Google", "Runoob", "Taobao" ]
      }

      x = myObj.sites[0];
      //x = Google

      // 循环数组(for-in循环)
      var a = "";
      for(i in myObj){
      a += myObj.sites[i]+"<br>";
      }
      // for循环
      for(var i = 0;i<myObj.sites.length;i++){
      x += myObj.sites[i]+"<br>";
      }
    3. 循环数组(可以用for-in循环也可以用for循环)

    4. 修改数组值用索引值,删除数组元素用delete关键字来删除数组元素

  7. JSON.parse()

    1. 服务器返回数据一般是字符串,JSON.parse()方法可以将字符串数据转换为JavaScript对象
    2. 语法:JSON.parse(text[, reviver]);
    3. text:必需,一个有效的字符串;reviver:可选,一个转换结果的函数,将为对象的每个成员调用此函数
    4. 从服务端接收JSON数据或数组的JSON数据
      1. 使用AJAX从服务器请求JSON数据,并解析为JavaScript对象
    5. JSON不能存储Date对象,需要存储Date对象时,要先将其转为字符串,然后将字符串转为Date对象(也可以使用JSON.parse的第二个参数reviver,一个转换结果的函数,对象的每个成员调用此函数)
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      var text = '{ "name":"Runoob", "initDate":"2013-12-14", "site":"www.runoob.com"}';
      var obj = JSON.parse(text, function (key, value) {
      if (key == "initDate") {
      return new Date(value);
      } else {
      return value;
      }});

      document.getElementById("demo").innerHTML = obj.name + "创建日期:" + obj.initDate;

      //JSON.parse()和JavaScript函数eval("("+text+")")都是将字符串JSON文本转换为JavaScript对象
      // eval() 函数可编译并执行任何 JavaScript 代码。这隐藏了一个潜在的安全问题。
  8. JSON.stringify()

    1. 向服务器发送的数据一般是字符串,可以使用JSON.stringify()方法将JavaScript对象转换为字符串
    2. 语法:JSON.stringify(value[, replacer[, space]])
    3. value:必需,要转换的JavaScript值(通常为对象或数组)
    4. replace:可选,用于转换结果的函数或数组。
    5. space:可选,文本添加缩进、空格和换行符,如果space是一个数字,则返回值文本在每个级别缩进指定数目的空格,如果space大于10,则文本缩进10个空格。space也可以使用非数字,如:\t。
    6. JSON不能存储Date对象,JSON.stringify()会将所有日期转换为字符串
      1
      2
      3
      4
      var obj = { "name":"runoob", "alexa":10000, "site":"www.runoob.com"};
      // myJSON是字符串
      var myJSON = JSON.stringify(obj);
      document.getElementById("demo").innerHTML = myJSON;
  • 本文作者: SindreYang
  • 本文链接: http://blog.mviai.com/2025/12._JSON/
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!

欢迎关注我的其它发布渠道