Home > php教程 > php手册 > PHP使用JSON实例分析详解

PHP使用JSON实例分析详解

WBOY
Release: 2016-05-25 16:48:56
Original
1408 people have browsed it

JSON是一种轻量级别的数据交互格式,他可以方便快捷的提交网络的应用,相对于xml来讲json可读性不强,但要在数据传输上要优于xml哦,下面我们看几个实例。

在PHP编码JSON(json_encode)

PHP json_encode()函数用于在PHP JSON编码。这个函数成功返回JSON表示的值,失败则返回FALSE。

语法:

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

value: 即将编码的值,此函数只适用于UTF-8编码的数据。

options: 这个可选的值是一个位掩码,由JSON_HEX_TAG JSON_HEX_QUOT,JSON_HEX_AMP,JSON_HEX_APOS,JSON_NUMERIC_CHECK,JSON_PRETTY_PRINT,JSON_UNESCAPED_SLASHES,JSON_FORCE_OBJECT

例子

下面的例子演示了如何用PHP数组转换成JSON:

<?php
$arr = array(
    &#39;a&#39; => 1,
    &#39;b&#39; => 2,
    &#39;c&#39; => 3,
    &#39;d&#39; => 4,
    &#39;e&#39; => 5
);
echo json_encode($arr);
?>
Copy after login

在执行过程中,这将产生以下结果:

{"a":1,"b":2,"c":3,"d":4,"e":5}
Copy after login

下面的示例显示如何将PHP对象可以转换成JSON:

<?php
class Emp {
    public $name = "";
    public $hobbies = "";
    public $birthdate = "";
}
$e = new Emp();
$e->name = "sachin";
$e->hobbies = "sports";
$e->birthdate = date(&#39;m/d/Y h:i:s a&#39;, "8/5/1974 12:20:03 p");
$e->birthdate = date(&#39;m/d/Y h:i:s a&#39;, strtotime("8/5/1974 12:20:03"));
echo json_encode($e);
?>
Copy after login

在执行过程中,这将产生以下结果:

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

解码JSON在PHP(json_decode)

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

语法:

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

json_string: 它必须是UTF-8编码的数据编码的字符串

assoc: 这是一个布尔类型参数设置为TRUE时,返回的对象将被转换成关联数组

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

options: 它是一个整数类型的位掩码JSON解码,支持JSON_BIGINT_AS_STRING

例子

下面的示例显示了如何可以使用PHP来解码JSON对象:

Copy after login

在执行过程中,这将产生以下结果:

object(stdClass)#1 (5) {
["a"] => int(1)
["b"] => int(2)
["c"] => int(3)
["d"] => int(4)
["e"] => int(5)
}
array(5) {
["a"] => int(1)
["b"] => int(2)
["c"] => int(3)
["d"] => int(4)
["e"] => int(5)
}
Copy after login

假如我们获取的JSON数据如下:(可以使用curl、fsockopen等方式获取)

{
"translation":["Hello world"],
"query":"你好世界",
"errorCode":0,
"web":[
{
"value":["hello world"],
"key":"你好世界"
},
{
"value":["Hello World"],
"key":"世界你好"
}
]
}
Copy after login

用json_decode函数返回array的方式得到:

Array
(
[translation] => Array
(
[0] => Hello world
)
[query] => 你好世界
[errorCode] => 0
[web] => Array
(
[0] => Array
(
 [value] => Array
  (
   [0] => hello world
  )
 [key] => 你好世界
)
[1] => Array
(
 [value] => Array
  (
   [0] => Hello World
  )
 [key] => 世界你好
)
)
)
Copy after login

我们在PHP语言中可以用以下方法取得我们想要的值:

" . $jsondata['translation'][0]; //Hello world
echo "
" . $jsondata['query']; //你好世界 echo "
" . $jsondata['web'][0]['value'][0]; //hello world echo "
" . $jsondata['web'][1]['key']; //世界你好 ?>
Copy after login

例,结合数据库操作

<?php
include &#39;./include/conn.php&#39;; //数据库链接文件
$sql_notice = mysql_query(&#39;SELECT * FROM gg_notice where enable = "1" limit 0,10&#39;);
$notice = mysql_fetch_array($sql_notice, MYSQL_ASSOC);
print_r($notice);
?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>第一php网提供的教程--将数据库读取的数据生成json格式</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<!-- <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js" type="text/javascript"/></script> -->
<script language=javascript>
</script>
</head>
<body>
<pre class="brush:php;toolbar:false">
Copy after login

请注意两种方法生成的对象数组在结构上的区别

<?php
echo &#39;<h1>法一</h1>&#39;;
//假设以下数组是根据我们从数据库读取的数据生成的
$jarr = array(
    &#39;total&#39; => 239,
    &#39;row&#39; => array(
        array(
            &#39;code&#39; => &#39;001&#39;,
            &#39;name&#39; => &#39;中国www.phprm.com&#39;,
            &#39;addr&#39; => &#39;Address 11&#39;,
            &#39;col4&#39; => &#39;col4 data&#39;
        ) ,
        array(
            &#39;code&#39; => &#39;002&#39;,
            &#39;name&#39; => &#39;Name 2&#39;,
            &#39;addr&#39; => &#39;Address 12&#39;,
            &#39;col4&#39; => &#39;col4 data&#39;
        ) ,
    )
);
//法一:
$jobj = new stdclass(); //实例化stdclass,这是php内置的空类,可以用来传递数据,由于json_decode后的数据是以对象数组的形式存放的,
//所以我们生成的时候也要把数据存储在对象中
foreach ($jarr as $key => $value) {
    $jobj->$key = $value;
}
print_r($jobj); //打印传递属性后的对象
echo &#39;使用$jobj->row[0][&#39;code&#39;]输出数组元素:&#39; . $jobj->row[0][&#39;code&#39;] . &#39;<br>&#39;;
echo &#39;编码后的json字符串:&#39; . json_encode($jobj) . &#39;<br>&#39;; //打印编码后的json字符串
echo &#39;<hr>&#39;;
//法二:
echo &#39;<h1>法二</h1>&#39;;
echo &#39;编码后的json字符串:&#39;;
echo $str = json_encode($jarr); //将数组进行json编码
echo &#39;<br>&#39;;
$arr = json_decode($str); //再进行json解码
print_r($arr); //打印解码后的数组,数据存储在对象数组中
echo &#39;使用$arr->row[0]->code输出数组元素:&#39; . $arr->row[0]->code;
?>
</body>
</html>
Copy after login


本文地址:

转载随意,但请附上文章地址:-)

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Recommendations
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template