PHP数据操作 - JSON

JSONJavaScript Object Notation)是一种构想设计、轻量级的数据交换语言,以文字为基础,且易于让人阅读。尽管JSON是Javascript的一个子集,但JSON是独立于语言的文本格式,并且采用了类似于C语言家族的一些习惯。

JSON用于描述数据结构,有以下形式存在。

  • 对象(object):一个对象以 { 开始,并以 } 结束。一个对象包含一系列非排序的名称/值对,每个名称/值对之间使用 , 分区。
  • 名称/值(collection):名称和值之间使用 : 隔开,一般的形式是:
1
{name:value}

一个名称是一个字符串; 一个值可以是一个字符串,一个数值,一个对象,一个布尔值,一个有序列表,或者一个null值。

  • 值的有序列表(Array):一个或者多个值用“,”分区后,使用“[”,“]”括起来就形成了这样的列表,形如:
1
[collection, collection]
  • 字符串:以””括起来的一串字符。
  • 数值:一系列0-9的数字组合,可以为负数或者小数。还可以用“e”或者“E”表示为指数形式。
  • 布尔值:表示为true或者false。

JSON与XML最大的不同在于XML是一个完整的标记语言,而JSON不是。这使得XML在程序判读上需要比较多的功夫。XML在数据存储,扩展及高级检索方面具备对JSON的优势。

而JSON则由于比XML更加小巧,以及浏览器的内建快速解析支持,使得其更适用于网络数据传输领域。但是当JSON数据很长的时候,我们会陷入繁琐复杂的数据节点查找中。开发者可以通过JSON在线编辑快速定位节点,将数据结构化。

PHP创建JSON

PHP的数组和字典可以通过 json_encode 转码为JSON数据,同JSON的数据结构一样,PHP的数组和字典也支持互相嵌套:

1
2
3
4
$dic = array('h'=>'Hello', 'w'=>'World');
$arr = [1, 2, 5, 8, 'Hello', 'Geek', $dic];
$json = json_encode($arr);
echo $json.'<br>';

PHP解析JSON

PHP的函数 json_decode 可以快速的将JOSN格式的数据转换为数组或对象:

1
2
3
4
5
$jsonStr = '{"h":"Hello", "w":"World", "arr":[1, 2, 3]}';
$object = json_decode($jsonStr);
$array = json_decode($jsonStr, true);
var_dump($object);
var_dump($array);

而获取JOSN中单独的元素和对象,和类的取值与数组取值没有什么不同:

1
2
3
4
5
6
$jsonStr = '{"h":"Hello", "w":"World", "arr":[1, 2, 3]}';
$object = json_decode($jsonStr);
$array = json_decode($jsonStr, true);
echo $object->h.'<br>';
echo $array['h'].'<br>';