【json】输出json格式的数据

<?php

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

//$json_arr=array();
$sql="select * from pre_home_feed limit 0,20";
$result=mysql_query($sql);
if($num=mysql_num_rows($result)){
	while($row=mysql_fetch_assoc($result)){
		$row['title_data']=empty($row['title_data'])?array():(is_array($row['title_data'])?$row['title_data']:unserialize($row['title_data']));//feed标题
		$row['body_data']=empty($row['body_data'])?array():(is_array($row['body_data'])?$row['body_data']:unserialize($row['body_data']));//feed内容
		$searchs = $replaces = array();
		if($row['title_data']) {//feed标题,即:动态标题不为空的情况 反序列化的title_data数据
			foreach (array_keys($row['title_data']) as $key) {//$key值:message、hash_data
				$searchs[] = '{'.$key.'}';
				$replaces[] = $row['title_data'][$key];
			}
			$searchs[] = '{actor}';
			$row['title_template'] = str_replace($searchs, $replaces, $row['title_template']);//替换后的feed标题模板
		}
		$searchs = $replaces = array();
		if($row['body_data']) {//feed标题,即:动态标题不为空的情况 反序列化的title_data数据
			foreach (array_keys($row['body_data']) as $key) {//$key值:message、hash_data
				$searchs[] = '{'.$key.'}';
				$replaces[] = $row['body_data'][$key];
			}
			$searchs[] = '{actor}';
			$row['body_template'] = str_replace($searchs, $replaces, $row['body_template']);//替换后的feed内容模板
		}

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

echo JSON($json_arr);
/*************************************************************/

/****返回的json格式数据:这是正确的json格式数据****************
 *{
 *	 "name":"黄强",
 *	 "nick":"小强",
 *	 "contact":{
 *		 "email":"huangqiang@163.com",
 *		 "website":"http://www.baidu.com"
 *	 }
 *  }
 *************************************************************/
$arr = array(   
   		 'name' => '黄强',   
   		 'nick' => '小强',   
   		 'contact' => array(   
        		'email' => 'huangqiang@163.com',   
        		'website' => 'http://www.baidu.com',   
   		 )   
);
//echo JSON($arr);

/**************************************************************
 *
 *	使用特定function对数组中所有元素做处理
 *	@param	string	&$array		要处理的字符串
 *	@param	string	$function	要执行的函数
 *	@return boolean	$apply_to_keys_also		是否也应用到key上
 *	@access public
 *
 *************************************************************/
function arrayRecursive(&$array, $function, $apply_to_keys_also = false)
{
    static $recursive_counter = 0;
    if (++$recursive_counter > 1000) {
        die('possible deep recursion attack');
    }
    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--;
}
 
/**************************************************************
 *
 *	将数组转换为JSON字符串(兼容中文)
 *	@param	array	$array		要转换的数组
 *	@return string		转换得到的json字符串
 *	@access public
 *
 *************************************************************/
function JSON($array) {
	arrayRecursive($array, 'urlencode', true);
	$json = json_encode($array);//将数组json化
	return urldecode($json);//返回json格式的字符串
}
?>


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


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值