天天看点

php json 二进制数据,PHP 操作 JSON 格式数据

JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式。它基于 ECMAScript (w3c制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。

想要用 PHP 操作 JSON 就离不开下面两个函数:json_decode(); // 对JSON格式的字符串进行解码

json_encode(); // 对变量进行 JSON 编码

这里先说 json_decode 对 JSON 格式的字符串进行解码,前端上传的 JSON 数据对于 PHP 来说就是字符串,json_decode 可以把 JSON 字符串转换为 PHP 对象。

JSON 解码 & 操作

下面是一个 PHP 写的 JSON 字符串:$json = '{"user": "Administrator", "password": "123456"}';

如果不经过转换是不能直接操作的,即使用正则表达式也很难,如果直接输出的话还是一样的字符串:{"user": "Administrator", "password": "123456"}

这里就需要用到 json_decode 来转换,需要传入要转换的 JSON 字符串,返回转换后的 PHP 对象:$json = '{"user": "Administrator", "password": "123456"}'; // JSON字符串

$json = json_decode($json); // JSON字符串解码

现在就可以操作这个 JSON 对象了:echo $json->user; // 输出用户

echo $json->password; // 输出密码

这是一个很简单的 JSON 数据,JSON 数据是可以包含数组和多层嵌套的,

下面是一个稍微有点难度的 JSON 数据:{

"user": "Administrator",

"password": "123456",

"phone_num": [

"13011112222",

"15522222222",

"13988888888"

],

"friends": [

{

"name": "马云",

"age": "54"

},

{

"name": "马化腾",

"age": "47"

},

{

"name": "李彦宏",

"age": "50"

}

]

}echo $json->user; // 输出用户

echo $json->password; // 输出密码

for($i = 0;$i < count($json->phone_num);$i ++) {

echo $json->phone_num[$i]; // 输出手机号

}

for ($i = 0;$i < count($json->friends);$i ++) {

echo $json->friends[$i]->name; // 输出好友名字

echo $json->friends[$i]->age; // 输出好友年龄

}

JSON 的字段名和值用冒号分隔,数组写在方括号里,对象写在花括号里,JSON对 象里可以包含数组,数组里也可以包含 JSON 对象,只要知道了 JSON 的语法结构,无论在复杂的 JSON 数据也能迎刃而解。

JSON 编码

最后来说一下 json_encode 对 PHP 变量进行 JSON 编码,也就是把 PHP 变量或对象转换为 JSON 字符串,常用于输出数据给前端。通常情况下在数据库查询出数据后为了便于操作都会把数据转换为 PHP 数组,可以直接输出到页面,但如果前端使用 AJAX 请求的话就不能直接输出数组了,这时候就需要用 json_encode 把数组转换为 JSON 字符串,方便前端解析。

下面是一个 PHP 数组:$data = array(

array(

"name" => "小明",

"age" => 10

),

array(

"name" => "小强",

"age" => 8

),

array(

"name" => "小李",

"age" => 10

)

);

如果直接用 print_r 输出的话前端是不能解析的,这里使用 json_encode 对数组进行编码:$data = json_encode($data);

传入要编码的 PHP 变量或对象,返回编码后的 JSON 字符串,下面是经过 JSON 编码后的效果:[

{

"name": "小明",

"age": 10

},

{

"name": "小强",

"age": 8

},

{

"name": "小李",

"age": 10

}

]

前端收到这个 JSON 字符串后在把这个字符串转换为 JSON 对象就可以使用了。