zoukankan      html  css  js  c++  java
  • Study of json

    JSON是一种基于文本的数据交换格式,源于JavaScript,用于Web服务和其他连接的应用程序。

    JSON语法

    JSON只定义了两种数据结构:对象和数组。一个对象是一组键 - 值对,一个数组是一系列值。JSON定义了七种值类型:

    • 数字(整数或浮点数)
    • 字符串(在双引号中)
    • 逻辑值(true 或 false)
    • 数组(在方括号中)
    • 对象(在花括号中)
    • null

    以下示例显示包含键 - 值对的示例对象的JSON数据。该名称的值"phoneNumbers"是一个数组,其元素是两个对象。

    {
       "firstName": "xu",
       "lastName": "daxia",
       "age": 18,
       "streetAddress": "80 t Dr",
       "city": "Town",
       "state": "JA",
       "postalCode": "12345",
       "phoneNumbers": [
          { "Mobile": "erwer1" },
          { "Home": "erewywer" }
       ]
    }

    JSON具有以下语法。

    • 对象包含在大括号({})中,它们的名称 - 值对由逗号(,分隔,并且一对中的名称和值由冒号(:分隔对象中的名称是字符串,而值可以是七种值类型中的任何一种,包括另一个对象或数组。

    • 数组包含在方括号([])中,并且它们的值由逗号(,分隔数组中的每个值都可以是不同的类型,包括另一个数组或对象。

    • 当对象和数组包含其他对象或数组时,数据具有树形结构。

    JSON的使用

    JSON经常用作通用格式,用于序列化和反序列化通过Internet互相通信的应用程序中的数据。这些应用程序使用不同的编程语言创建,并运行在非常不同的环境中 JSON适用于这种情况,因为它是一个开放标准,它易于读写,并且比其他表示更紧凑。

    RESTful Web服务广泛使用JSON作为请求和响应中的数据格式。HTTP标头用于指示请求或响应的内容是JSON数据

    Content-Type: application/json

    JSON表示通常比XML表示更紧凑,因为JSON没有结束标记。与XML不同,JSON没有广泛接受的架构来定义和验证JSON数据的结构。

    JSON 最常见的用法之一,是从 web 服务器上读取 JSON 数据(作为文件或作为 HttpRequest),将 JSON 数据转换为 JavaScript 对象,然后在网页中使用该数据。

    JSON 实例 - 来自字符串的对象

    创建包含 JSON 语法的 JavaScript 字符串:

    var txt = '{ "employees" : [' +
    '{ "firstName":"Bill" , "lastName":"Gates" },' +
    '{ "firstName":"George" , "lastName":"Bush" },' +
    '{ "firstName":"Thomas" , "lastName":"Carter" } ]}';
    

    由于 JSON 语法是 JavaScript 语法的子集,JavaScript 函数 eval() 可用于将 JSON 文本转换为 JavaScript 对象。

    eval() 函数使用的是 JavaScript 编译器,可解析 JSON 文本,然后生成 JavaScript 对象。必须把文本包围在括号中,这样才能避免语法错误:

    var obj = eval ("(" + txt + ")");

    在网页中使用 JavaScript 对象:

    例子

    <p>
    First Name: <span id="fname"></span><br />
    Last Name: <span id="lname"></span><br />
    </p>
    
    <script type="text/javascript">
    document.getElementById("fname").innerHTML = obj.employees[1].firstName
    document.getElementById("lname").innerHTML = obj.employees[1].lastName
    </script>

    生成和解析JSON数据

    为了生成和解析JSON数据,有两种编程模型,它们与用于XML文档的编程模型相似。

    对象模型创建一个表示内存中JSON数据的树。然后可以导航,分析或修改树。这种方法是最灵活的,并且允许需要访问树的完整内容的处理。但是,它通常比流模式慢,需要更多内存。对象模型通过一次导航整个树来生成JSON输出。

    流式传输模型使用基于事件的解析器,该解析器一次读取一个元素的JSON数据。解析器生成事件并在对象或数组开始或结束时,当它找到一个键或找到一个值时停止处理。每个元素都可以被应用程序代码处理或丢弃,然后解析器继续进行下一个事件。这种方法适用于本地处理,其中元素的处理不需要来自其余数据的信息。流式传输模型通过一次对一个元素进行函数调用来生成给定流的JSON输出。

    类似 XML

    • JSON 是纯文本
    • JSON 具有“自我描述性”(人类可读)
    • JSON 具有层级结构(值中存在值)
    • JSON 可通过 JavaScript 进行解析
    • JSON 数据可使用 AJAX 进行传输

    相比 XML 的不同之处

    • 没有结束标签
    • 更短
    • 读写的速度更快
    • 能够使用内建的 JavaScript eval() 方法进行解析
    • 使用数组
    • 不使用保留字

    为什么使用 JSON?

    对于 AJAX 应用程序来说,JSON 比 XML 更快更易使用:

    使用 XML

    • 读取 XML 文档
    • 使用 XML DOM 来循环遍历文档
    • 读取值并存储在变量中

    使用 JSON

    • 读取 JSON 字符串
    • 用 eval() 处理 JSON 字符串
  • 相关阅读:
    山寨 《寻找房祖名》
    css3 弹性效果上下翻转demo
    CSS3 Hover 动画特效
    判断一个字符串通过变化字符的位置,是否可以组成回文
    获取多个字符串中的共同字符
    转换为回文的步数
    IOS中图片的一些处理方法
    python django的一点笔记
    一个图片切割的例子
    一个批量修改文件夹中文件名的命令
  • 原文地址:https://www.cnblogs.com/qiangzai/p/8870311.html
Copyright © 2011-2022 走看看