Heim  >  Artikel  >  php教程  >  php返回json数据函数例子

php返回json数据函数例子

WBOY
WBOYOriginal
2016-05-25 16:45:571215Durchsuche

json_encode()函数是一个在php中可以把数组转换成json格式的函数了,但json_encode函数对于英文是没有任何问题,如果碰到中文或编码有不致情况时会出现中文转换之后变空了,下面我就来从多方面来介绍php返回json数据应用与一些使用转换时的问题解决办法。

json_encode()函数用法。

echo json_encode(array('a'=>'bbbb','c'=>'ddddd');

这样就会生成一个标准的json格式的数据

<?php
//需要执行的SQL语句
//单条
$sql="select id,name from tbl_user where id=1";
//多条数据
//$sql="select id,name from tbl_user";
//调用conn.php文件进行数据库操作 
require(&#39;Conn.php&#39;);
//提示操作成功信息,注意:$result存在于conn.php文件中,被调用出来 
if($result) 
{
// $array=mysql_fetch_array($result,MYSQL_ASSOC);
 
  
 /*数据集
 $users=array();
 $i=0;
 while($row=mysql_fetch_array($result,MYSQL_ASSOC)){
   echo $row[&#39;id&#39;].&#39;-----------&#39;.$row[&#39;name&#39;].&#39;</br>&#39;;
   $users[$i]=$row;
   $i++;
 }
  echo json_encode(array(&#39;dataList&#39;=>$users));
 */
 /*单条数据*/
 $row=mysql_fetch_row($result,MYSQL_ASSOC);
 
 echo json_encode(array(&#39;jsonObj&#39;=>$row));
}
mysql_free_result($result);
//释放结果
mysql_close();
//关闭连接
?>

上面是数据库生成json数据了

单条数据:{"jsonObj":{"id":"1","name":"lmw"}}

多条数据:{"dataList":[{"id":"1","name":"lmw"},{"id":"2","name":"xxj"},{"id":"3","name":"xxxj"}]}


现在很多情况下,我们需要程序返回一个Json格式的结果,比如:

{
    "UserKeyGetResponse":
        {"RequestName":"e99e6d63e8c712d7699f52978a","api_key_value":"41954dd9b1cb6a95802eab6810"},
    "error_response":
        {"code":"NO_ERROR","msg":"获取系统参数成功"}
}

可以将结果写成这样的数组形式:

$respon = array(&#39;UserKeyGetResponse&#39; => array(&#39;RequestName&#39; => $api_request_name, &#39;api_key_value&#39; => $api_key_value),
&#39;error_response&#39; => array(&#39;code&#39; => &#39;NO_ERROR&#39;, &#39;msg&#39; => &#39;获取系统参数成功&#39;));

代码

<?php
function arrayRecursive(&$array, $function, $apply_to_keys_also = false)
{
    static $recursive_counter = 0;
    if (++$recursive_counter > 1000) {
        die(&#39;possible deep recursion attack&#39;);
    }
    foreach ($array as $key => $value) {
        if (is_array($value)) {
            arrayRecursive($array[$key], $function, $apply_to_keys_also);
        } else {
            $array[$key] = $function($value);
        }
        if ($apply_to_keys_also && is_string($key)) {
            $new_key = $function($key);
            if ($new_key != $key) {
                $array[$new_key] = $array[$key];
                unset($array[$key]);
            }
        }
    }
    $recursive_counter--;
}
?>

g:

<?php
$error_respon = array(&#39;code&#39; => &#39;ERROR_MSG_MISS&#39;, &#39;msg&#39; => &#39;消息不存在&#39;);
echo JSON($array);
?>

结果为:

{"code":"ERROR_MSG_MISS","msg":"消息不存在"}

客户端就可以解析这个结果了,当然错误码要用数字代替。

这样就好多了我们显示的直接是中文了,当然显示那个16进制的编码也是没有问题的哦。


本文链接:

收藏随意^^请保留教程地址.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn