首页
站长论坛BBS
救助
投稿
discuz视频教程
discuz技术支持
版块
登录
快速注册

输出json格式的数据

建站高手 2015-6-14 [PHP] 来自PC 复制链接
3801
discuz使用视频教程
31idc

马上注册,一起探讨正确快速的建站方法

您需要 登录 才可以下载或查看,没有帐号?快速注册

x
提示:java开发人员接受到的json数据编码为gbk编码,可能是我的php文件编码是gbk的缘故吧
  1. <?php

  2. /***************将数据库中的记录json化*****************/
  3. mysql_connect("localhost","root","");
  4. mysql_select_db("discuz3");
  5. mysql_query("set names gbk");

  6. //$json_arr=array();
  7. $sql="select * from pre_home_feed limit 0,20";
  8. $result=mysql_query($sql);
  9. if($num=mysql_num_rows($result)){
  10.         while($row=mysql_fetch_assoc($result)){
  11.                 $row['title_data']=empty($row['title_data'])?array():(is_array($row['title_data'])?$row['title_data']:unserialize($row['title_data']));//feed标题
  12.                 $row['body_data']=empty($row['body_data'])?array():(is_array($row['body_data'])?$row['body_data']:unserialize($row['body_data']));//feed内容
  13.                 $searchs = $replaces = array();
  14.                 if($row['title_data']) {//feed标题,即:动态标题不为空的情况 反序列化的title_data数据
  15.                         foreach (array_keys($row['title_data']) as $key) {//$key值:message、hash_data
  16.                                 $searchs[] = '{'.$key.'}';
  17.                                 $replaces[] = $row['title_data'][$key];
  18.                         }
  19.                         $searchs[] = '{actor}';
  20.                         $row['title_template'] = str_replace($searchs, $replaces, $row['title_template']);//替换后的feed标题模板
  21.                 }
  22.                 $searchs = $replaces = array();
  23.                 if($row['body_data']) {//feed标题,即:动态标题不为空的情况 反序列化的title_data数据
  24.                         foreach (array_keys($row['body_data']) as $key) {//$key值:message、hash_data
  25.                                 $searchs[] = '{'.$key.'}';
  26.                                 $replaces[] = $row['body_data'][$key];
  27.                         }
  28.                         $searchs[] = '{actor}';
  29.                         $row['body_template'] = str_replace($searchs, $replaces, $row['body_template']);//替换后的feed内容模板
  30.                 }

  31.                 $json_arr[$row['feedid']][]=$row;//即将被json化的数组:一定要是键值对,务必确保数组中所有的元素及子元素都是关联数组才能保证转化成的json数据格式正确
  32.         }
  33. }

  34. echo JSON($json_arr);
  35. /*************************************************************/

  36. /****返回的json格式数据:这是正确的json格式数据****************
  37. *{
  38. *         "name":"黄强",
  39. *         "nick":"小强",
  40. *         "contact":{
  41. *                 "email":"huangqiang@163.com",
  42. *                 "website":"http://www.baidu.com"
  43. *         }
  44. *  }
  45. *************************************************************/
  46. $arr = array(   
  47.                     'name' => '黄强',   
  48.                     'nick' => '小强',   
  49.                     'contact' => array(   
  50.                         'email' => 'huangqiang@163.com',   
  51.                         'website' => 'http://www.baidu.com',   
  52.                     )   
  53. );
  54. //echo JSON($arr);

  55. /**************************************************************
  56. *
  57. *        使用特定function对数组中所有元素做处理
  58. *        @param        string        &$array                要处理的字符串
  59. *        @param        string        $function        要执行的函数
  60. *        @return boolean        $apply_to_keys_also                是否也应用到key上
  61. *        @access public
  62. *
  63. *************************************************************/
  64. function arrayRecursive(&$array, $function, $apply_to_keys_also = false)
  65. {
  66.     static $recursive_counter = 0;
  67.     if (++$recursive_counter > 1000) {
  68.         die('possible deep recursion attack');
  69.     }
  70.     foreach ($array as $key => $value) {
  71.         if (is_array($value)) {
  72.             arrayRecursive($array[$key], $function, $apply_to_keys_also);
  73.         } else {
  74.             $array[$key] = $function($value);
  75.         }

  76.         if ($apply_to_keys_also && is_string($key)) {
  77.             $new_key = $function($key);
  78.             if ($new_key != $key) {
  79.                 $array[$new_key] = $array[$key];
  80.                 unset($array[$key]);
  81.             }
  82.         }
  83.     }
  84.     $recursive_counter--;
  85. }

  86. /**************************************************************
  87. *
  88. *        将数组转换为JSON字符串(兼容中文)
  89. *        @param        array        $array                要转换的数组
  90. *        @return string                转换得到的json字符串
  91. *        @access public
  92. *
  93. *************************************************************/
  94. function JSON($array) {
  95.         arrayRecursive($array, 'urlencode', true);
  96.         $json = json_encode($array);//将数组json化
  97.         return urldecode($json);//返回json格式的字符串
  98. }
  99. ?>
复制代码



上一篇:四必杀让网站回头客达到百分之一百
下一篇:php分页代码
neng913 发表于 2015-6-14 16:30:38 来自PC
学习了
l8821686 发表于 2015-6-16 11:06:47 来自PC
赞!很好很强大!!!
aihou 发表于 2015-6-16 16:59:45 来自PC
好多uozimu啊字母啊
http://www.xycywl.com
http://www.zzhrjjx.com
htt
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

快速回复 返回顶部 返回列表