Json数据的学习

JSON 教程

<body>
<h2>JSON Object Creation in JavaScript</h2>

<p>
Name: <span id="jname"></span><br /> 
Age: <span id="jage"></span><br /> 
Address: <span id="jstreet"></span><br /> 
Phone: <span id="jphone"></span><br /> 
</p>

<script>
var JSONObject= {
"name":"John Johnson",
"street":"Oslo West 555", 
"age":33,
"phone":"555 1234567"};
document.getElementById("jname").innerHTML=JSONObject.name 
document.getElementById("jage").innerHTML=JSONObject.age 
document.getElementById("jstreet").innerHTML=JSONObject.street 
document.getElementById("jphone").innerHTML=JSONObject.phone 
</script>

</body>
JSON数据的访问格式为  JOSNNAME.JSONDATA

JSON 语法是 JavaScript 对象表示法语法的子集。

  • 数据在名称/值对中
  • 数据由逗号分隔
  • 花括号保存对象
  • 方括号保存数组

JSON 名称/值对

JSON 数据的书写格式是:名称/值对。

名称/值对包括字段名称(在双引号中),后面写一个冒号,然后是值:

"firstName" : "John"

这很容易理解,等价于这条 JavaScript 语句:

firstName = "John"

JSON 值

JSON 值可以是:

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

JSON 对象

JSON 对象在花括号中书写:

对象可以包含多个名称/值对:

{ "firstName":"John" , "lastName":"Doe" }

这一点也容易理解,与这条 JavaScript 语句等价:

firstName = "John"
lastName = "Doe"

JSON 数组

JSON 数组在方括号中书写:

数组可包含多个对象:

{
"employees": [
{ "firstName":"John" , "lastName":"Doe" }, 
{ "firstName":"Anna" , "lastName":"Smith" }, 
{ "firstName":"Peter" , "lastName":"Jones" }
]
}

在上面的例子中,对象 "employees" 是包含三个对象的数组。每个对象代表一条关于某人(有姓和名)的记录。

JSON 使用 JavaScript 语法

因为 JSON 使用 JavaScript 语法,所以无需额外的软件就能处理 JavaScript 中的 JSON。

通过 JavaScript,您可以创建一个对象数组,并像这样进行赋值:

实例

var employees = [
{ "firstName":"John" , "lastName":"Doe" }, 
{ "firstName":"Anna" , "lastName":"Smith" }, 
{ "firstName":"Peter" , "lastName": "Jones" }
];

可以像这样访问 JavaScript 对象数组中的第一项:

employees[0].lastName;

返回的内容是:

Doe

可以像这样修改数据:

employees[0].firstName = "Jonatan";

JSON 文件

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

PHP操作JSON

在 php5.2.0 及以上版本已经内置 JSON 扩展。

JSON 函数

函数

描述

json_encode

对变量进行 JSON 编码

json_decode

对 JSON 格式的字符串进行解码,转换为 PHP 变量

json_last_error

返回最后发生的错误

json_encode

PHP json_encode() 用于对变量进行 JSON 编码,该函数如果执行成功返回 JSON 数据,否则返回 FALSE 。

语法

string json_encode ( $value [, $options = 0 ] )

参数

  • value: 要编码的值。该函数只对 UTF-8 编码的数据有效。
  • options:由以下常量组成的二进制掩码:太乱不记了

以下实例演示了如何将 PHP 数组转换为 JSON 格式数据:

<?php

$arr = array('a' => 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 格式数据:

<?php

class Emp {

public $name = "";

public $hobbies  = "";

public $birthdate = "";

}

$e = new Emp();

$e->name = "sachin";

$e->hobbies  = "sports";

$e->birthdate = date('m/d/Y h:i:s a', "8/5/1974 12:20:03 p");

$e->birthdate = date('m/d/Y h:i:s a', strtotime("8/5/1974 12:20:03"));

echo json_encode($e);?>

以上代码执行结果为:

{"name":"sachin","hobbies":"sports","birthdate":"08\/05\/1974 12:20:03 pm"}

json_decode

PHP json_decode() 函数用于对 JSON 格式的字符串进行解码,并转换为 PHP 变量。

语法

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

参数

json_string: 待解码的 JSON 字符串,必须是 UTF-8 编码数据

assoc: 当该参数为 TRUE 时,将返回数组,FALSE 时返回对象。

depth: 整数类型的参数,它指定递归深度

options: 二进制掩码,目前只支持 JSON_BIGINT_AS_STRING 。

PHP写入和读取JSON文件

<?php
    //生成一个PHP数组 假装从前端或者其他地方拿来的数据

    $data = array();
    $data['name'] = 'test1';
    $data['work'] = 'process';
    $data['purpose'] = 'json';

    //json_encode — 对变量进行 JSON 编码 待编码的 value ,除了resource 类型之外,可以为任何数据类型

    //该函数只能接受 UTF-8 编码的数据(译注:指字符/字符串类型的数据)
    //编码成功则返回一个以 JSON 形式表示的 string 。
    //首先将数组转换成JSON
    $json_string = json_encode($data);

    //写入文件
    file_put_contents('test.json',$json_string);

<?php
    //从文件中读取数据,以字符串形式到PHP中
    $json_string = file_get_contents('test.json');

    //json_decode — 对 JSON 格式的字符串进行解码
    //mixed json_decode ( string $json [, bool $assoc ] )
    //接受一个 JSON 格式的字符串并且把它转换为 PHP 变量
    //$assoc当该参数为 TRUE 时,将返回 array 而非 object 。
    //把JSON字符串转成PHP数组
    $data = json_decode($json_string,true);
    var_dump($data);

上一篇:如何解决Python.h:No such file or directory


下一篇:Ionic中使用Chart.js进行图表展示以及在iOS/Android中的性能差异