码迷,mamicode.com
首页 > Web开发 > 详细

json

时间:2021-05-23 23:05:48      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:ges   tao   tor   eva   jquery   描述   info   双引号   comm   

JSON简介

  • JSON: JavaScript Object Notation(JavaScript 对象表示法)

    • JSON 是存储和交换文本信息的语法,类似 XML。

    • JSON 比 XML 更小、更快,更易解析

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

    • JSON 是轻量级的文本数据交换格式

    • JSON 独立于语言:JSON 使用 Javascript语法来描述数据对象,但是 JSON 仍然独立于语言和平台。JSON 解析器和 JSON 库支持许多不同的编程语言。 目前非常多的动态(PHP,JSP,.NET)编程语言都支持JSON。

    • JSON 具有自我描述性,更易理解

  • 与 XML 相同之处

    • JSON 是纯文本

    • JSON 具有"自我描述性"(人类可读)

    • JSON 具有层级结构(值中存在值)

    • JSON 可通过 JavaScript 进行解析

    • JSON 数据可使用 AJAX 进行传输

  • 与XML不同之处

    • 没有结束标签

    • 更短

    • 读写的速度更快

    • 能够使用内建的 JavaScript eval() 方法进行解析

    • 使用数组

    • 不使用保留字

  • 使用XML的步骤:

    • 读取 XML 文档

    • 使用 XML DOM 来循环遍历文档

    • 读取值并存储在变量中

  • 使用JSON的步骤:

    • 读取 JSON 字符串

    • 用 eval() 处理 JSON 字符串

JSON语法

  • JSON 语法:是 JavaScript 语法的子集。

    • JavaScript对象:使用{}表示,属性以名称/值对,属性之间使用,分隔

    • {key1:value1,key2:value2,...}`

  • JSON语法规则:

    • 数据在name:value对中

    • 数据由,分隔

    • 大括号 {} 保存对象

    • 中括号 [] 保存数组,数组可以包含多个对象

  • JSON 名称/值对:key : value

  • JSON 值可以是:

    • 数字:整数或浮点数

    • 字符串:在双引号中

    • 逻辑值:true 或 false

    • 数组:在中括号中

    • 对象:在大括号中

    • null

  • JSON文件:

    • JSON 文件的文件类型是 .json

    • JSON 文本的 MIME 类型是 application/json

json空值

  • JSON空值使用null表示:

    {‘a‘:null}

json数字

  • JSON 数字可以是整型或者浮点型:

    {‘a‘:12}
    {‘b‘:12.4}

json字符串

  • JSON字符串可以使用单引号或者双引号引起:

    {‘a‘:‘string‘}
    {"b":"json"}
    {‘c‘:"str_json"}

json逻辑值

  • JSON逻辑值只有两个true或者false:

    {‘True‘:true}
    {‘False‘:false}

json对象

  • JSON对象使用{}表示:

    {key1 : value1, key2 : value2, ... keyN : valueN }

json数组

  • JSON数组使用[]表示,元素之间使用,分隔:

    • json数组可包含多个对象

    {
    [1,2,3,4,5]
    }
    {
     "languages":[
      {‘name‘:‘json‘},
    {‘name‘:‘python‘}
    ]
    }

JSON对象

  • JSON 对象使用在大括号{}中书写。

    • 对象可以包含多个 key/value(键/值)对。

    • key 必须是字符串,value 可以是合法的 JSON 数据类型(字符串, 数字, 对象, 数组, 布尔值或 null)。

    • key 和 value 中使用冒号:分割。

    • 每个 key/value 对使用逗号,分割。

  • 访问对象值

    • 使用点号.来访问对象的值:

      var myObj, x;
      myObj = { "name":"json", "alexa":10000, "site":null };
      x = myObj.name;
    • 使用中括号[]来访问对象的值:

      var myObj, x;
      myObj = { "name":"json", "alexa":10000, "site":null };
      x = myObj["name"];
  • 循环对象

    • 使用使用 for-in 来循环对象的属性:

      var myObj = { "name":"json", "alexa":10000, "site":null };
      for (x in myObj) {
         document.getElementById("demo").innerHTML += x + "<br>";
      }
    • 在 for-in 循环对象的属性时,使用中括号[]来访问属性的值:

      var myObj = { "name":"json", "alexa":10000, "site":null };
      for (x in myObj) {
         document.getElementById("demo").innerHTML += myObj[x] + "<br>";
      }
  • 嵌套 JSON 对象

    myObj = {
       "name":"json",
       "alexa":10000,
       "sites": {
           "site1":"www.json.com",
           "site2":"m.json.com",
           "site3":"c.json.com"
      }
    }
    • 使用点号(.)或者中括号([])来访问嵌套的 JSON 对象。

      x = myObj.sites.site1;
      // 或者
      x = myObj.sites["site1"];
  • 修改值

    • 使用点号.来修改 JSON 对象的值:

      var o = {"name":"json"}
      o.name = "python"
      //or
      o["name"] = "python"
  • 删除对象属性:

    • 使用 delete 关键字来删除 JSON 对象的属性:

      var o = {"name":"json","page":2000}
      delete o.page
      //or
      delete o["page"]

JSON数组

  • JSON 数组在中括号中书写。

    • JSON 中数组值必须是合法的 JSON 数据类型(字符串, 数字, 对象, 数组, 布尔值或 null)。

    • JavaScript 中,数组值可以是以上的 JSON 数据类型,也可以是 JavaScript 的表达式,包括函数,日期,及 undefined

  • JSON 对象中的数组

    • 对象属性的值可以是一个数组:

      var myObj = {
      "name":"网站",
      "num":3,
      "sites":[ "Google", "baidu", "Taobao" ]
      }
    • 可以使用索引值来访问数组:

      x = myObj.sites[2] // 访问Taobao
  • 循环数组

    • 你可以使用 for-in 来访问数组:

      for (i in myObj.sites) {
         x += myObj.sites[i];
      }
    • 可以使用 for 循环:

      for (i = 0; i < myObj.sites.length; i++) {
         x += myObj.sites[i];
      }
  • 嵌套 JSON 对象中的数组

    • JSON 对象中数组可以包含另外一个数组,或者另外一个 JSON 对象:

      myObj = {
         "name":"网站",
         "num":3,
         "sites": [
            { "name":"Google", "info":[ "Android", "Google 搜索", "Google 翻译" ]},
            { "name":"baidu", "info":[ "baidu 搜索", "百度 贴吧", "百度 地图" ] },
            { "name":"Taobao", "info":[ "淘宝", "网购" ] }
        ]
      }
  • 修改数组值

    • 你可以使用索引值来修改数组值:

      var o = {
       "name":"json",
       "info":[
         1,2,3,4,5
      ]
      }
      0.info[2] = 10
  • 删除数组元素

    • 可以使用delete删除数组元素

      • delete 运算符删除数组length属性值保持不变

      • delete 运算符并不是彻底删除元素,而是删除它的值,但仍会保留空间。

      • 运算符 delete 只是将该值置为 undefined,而不会影响数组长度,即将其变为稀疏数组。

    var o = {
     "name":"json",
     "info":[
       1,2,3,4,5
    ]
    }
    delete 0.info[2]

JSON.parse()

JSON.parse():JSON 通常用于与服务端交换数据。在接收服务器数据时一般是字符串。我们可以使用 JSON.parse() 方法将数据转换为 JavaScript 对象。

  • 语法:

    JSON.parse(text[, reviver])
  • 参数:

    • text:必需, 一个有效的 JSON 字符串。

    • reviver: 可选,一个转换结果的函数, 将为对象的每个成员调用此函数。

服务器发回JSON字符串

  • 对于服务器返回的JSON字符串,如果 jQuery 异步请求没做类型说明,或者以字符串方式接受,那么需要做一次对象化处理,方式不是太麻烦,就是将该字符串放于 eval()中执行一次。这种方式也适合以普通 javascipt 方式获取 json 对象,以下举例说明:

var u = eval(‘(‘+user+‘)‘);
  • 为什么要 eval 这里要添加 (‘(‘+user+‘)‘) 呢?

    • 原因在于:eval 本身的问题。 由于 json 是以 {} 的方式来开始以及结束的,在 js 中,它会被当成一个语句块来处理,所以必须强制性的将它转换成一种表达式。

    • 加上圆括号的目的是迫使 eval 函数在处理 JavaScript 代码的时候强制将括号内的表达式(expression)转化为对象,而不是作为语句(statement)来执行。

JSON.stringify()

JSON.stringify():JSON 通常用于与服务端交换数据。在向服务器发送数据时一般是字符串。我们可以使用 JSON.stringify() 方法将 JavaScript 对象转换为字符串。

  • 语法:

    JSON.stringify(value[, replacer[, space]])
  • 参数:

    • value:必需, 要转换的 JavaScript 值(通常为对象或数组)。

    • replacer:可选。用于转换结果的函数或数组。

      • 如果 replacer 为函数,则 JSON.stringify 将调用该函数,并传入每个成员的键和值。使用返回值而不是原始值。如果此函数返回 undefined,则排除成员。根对象的键是一个空字符串:""。

      • 如果 replacer 是一个数组,则仅转换该数组中具有键值的成员。成员的转换顺序与键在数组中的顺序一样。当 value 参数也为数组时,将忽略 replacer 数组。

    • space:可选,文本添加缩进、空格和换行符,如果 space 是一个数字,则返回值文本在每个级别缩进指定数目的空格,如果 space 大于 10,则文本缩进 10 个空格。space 也可以使用非数字,如:\t。

eval()

eval():json解析器,eval() 函数可编译并执行任何 JavaScript 代码。

  • 安全问题:这隐藏了一个潜在的安全问题。

    • 使用 JSON 解析器将 JSON 转换为 JavaScript 对象是更安全的做法。JSON 解析器只能识别 JSON 文本,而不会编译脚本。

JSONP使用

  • JSONP:Jsonp(JSON with Padding) 是 json 的一种"使用模式",可以让网页从别的域名(网站)那获取资料,即跨域读取数据。

 

 

json

标签:ges   tao   tor   eva   jquery   描述   info   双引号   comm   

原文地址:https://www.cnblogs.com/bright-future/p/14727709.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!