学习使用JSON
作者 伊可 | 发布于 2015-09-23
JSON PHPPython 文件格式

JSON

1、介绍

      JSON 或者 称它为JavaScript 对象表示法是一种轻量级的基于文本的开放标准,被设计用于可读可写的数据交换,多种语言支持包括 C,C++,Java,Python,Perl 等等。它是从 JavaScript 脚本语言中演变而来;文件名扩展是 .json;Json 的网络媒体类型是application/json;统一标示符类型(Uniform Type Identifier)是 public.json

2、JSON使用场景

  • 1、用于编写基于 JavaScript 应用程序,包括浏览器扩展和网站
  • 2、用于通过网络连接序列化和传输结构化数据
  • 3、主要用于在服务器和 Web 应用程序之间异步传输或共享数据。
  • 4、Web 服务和 APIs 可以使用 JSON 格式提供公用数据

    3、JSON语言特点

  • 1、JSON 容易阅读和编写
  • 2、它是一种轻量级的基于文本的交换格式
  • 3、语言无关

    4、JSON基本语法

  • 1、数据使用名/值对表示
  • 2、使用大括号保存对象,每个名称后面跟着一个 ':'(冒号),名/值对之间使用 ,(逗号)分割。
  • 3、使用方括号保存数组,数组值使用 ,(逗号)分割

          示例:

      { “School”: [ { "Location":"Shanghai", "Type": "985", "Name": "FuDan University" }, { "Location":"Zhengzhou", "Type": "211", "Name": "Zhengzhou University" } ] }

    5、JSON数据类型

          类型                    描述

  • 数字型              JS双精度浮点型
  • 字符型              双引号包裹的 Unicode 字符和反斜杠转义字符
  • 布尔型              true or false
  • 数组                          有序的值序列
  • 值                    字符串、数字、bool、null等等
  • 对象              无序键值对
  • 空格              任意符号之间
  • null                    空

    6、JSON在PHP和Python中的使用

    6.1 PHP解码与编码JSON

          PHP 的 json_encode() 函数用于在 PHP 中编码 JSON,编码成功时这个函数返回给定值的 JSON 表示形式,失败则返回 FALSE

      string json_encode ($value[ , $option = 0]);

          参数:

  • value: 要编码的值。这个函数只能用于 UTF-8 编码的数据。
  • options: 这个可选值是一个由 JSON_HEX_QUOT, JSON_HEX_TAG, JSON_HEX_AMP, JSON_HEX_APOS, JSON_NUMERIC_CHECK,JSON_PRETTY_PRINT, JSON_UNESCAPED_SLASHES, JSON_FORCE_OBJECT 组成的位掩码。

      示例: 使用 PHP 将一个数组转换为 JSON: 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5); echo json_encode($arr); ?> 执行时会生成如下结果: {"a":1,"b":2,"c":3,"d":4,"e":5} 相应的PHP对象一样可以被转换成JSON location= "Zhengzhou"; $s->type= "211"; $s->name= "Zhengzhou University"; echo json_encode($s); ?> 输出为: {"location":"Zhengzhou","type":"211","name":"Zhengzhou University"}

          PHP 的 json_decode() 函数用于在 PHP 中解码 JSON。这个函数返回从 JSON 解码到适当 PHP 类型的值

      mixed json_decode ($json [,$assoc = false [, $depth = 512 [, $options = 0 ]]])

          参数:

  • json_string: 编码的字符串,必须是 UTF-8 编码的数据。
  • 它是一个布尔类型的参数,当设置为 TRUE 时,返回的对象将会被转换为关联数组
  • 它是一个整型参数,用于指定递归深度
  • 它是一个 JSON 解码的整型位掩码。支持 JSON_BIGINT_AS_STRING

      示例: 使用 PHP 解码 JSON 对象 结果: object(stdClass)#1 (5) { ['location'] => string(Zhengzhou) ['type'] => string(211) ['name'] => string(Zhengzhou University) } array(3) { ['location'] => string(Zhengzhou) ['type'] => string(211) ['name'] => string(Zhengzhou University) }

    6.2 Python解码与编码JSON

          在使用 Python 编码和解码 JSON 之前,我们需要安装一个可用 JSON 模块。下载和安装 Demjson

          Python 的 encode() 函数用于将 Python 对象编码为 JSON 字符串表示。

      demjson.encode(self, obj, nest_level=0) 示例: 下面的例子展示了使用 Python 将数组转换为 JSON: #!/usr/bin/python import demjson data = [ {"location":"Zhengzhou","type":"211","name":"Zhengzhou University"} ] json = demjson.encode(data) print json 执行时会生成如下所示结果: [{"location":"Zhengzhou","type":"211","name":"Zhengzhou University"}]

          使用 Python 解码 JSON(decode)

          Python 可以使用 demjson.decode() 函数处理 JSON 解码。这个函数返回从 JSON 解码到适当 Python 类型的值

      demjson.decode(self, txt) 示例: 下面的例子展示了如何使用 Python 解码 JSON 对象。 #!/usr/bin/python import demjson json = '{"location":"Zhengzhou","type":"211","name":"Zhengzhou University"}'; text = demjson.decode(json) print text 执行时生成如下所示结果: {u"location":"Zhengzhou",u"type":"211",u"name":"Zhengzhou University"}