請問如何輸出這樣的json ?
{
data = (
{
"article_url" = "/disease/item/1";
"create_time" = "2014-08-11 11:38:58";
"knowledge_id" = 1;
title = "\U6d4b\U8bd5\U9057\U4f20\U75c5\U5e931";
},
{
"article_url" = "/disease/item/3";
"create_time" = "2014-07-22 15:38:28";
"knowledge_id" = 3;
title = "\U6211\U7684\U9057\U4f20\U77e5\U8bc6";
}
);
errcode = 0;
errdesc = "";
}
其中 ,來源於表的資料
"article_url" = "/disease/item/1";
"create_time" = "2014-08-11 11:38:58";
"knowledge_id" = 1;
title = "\U6d4b\U8bd5\U9057\U4f20\U75c5\U5e931";
表的迴圈讀取程式,
$i=0;
$listarr=array();
while($db->ROW())
{
$listarr[$i]["article_url"]=$ROW[article_url];
$listarr[$i]["create_time"]=$ROW[create_time];
$listarr[$i]["knowledge_id"]=$ROW[knowledge_id];
$listarr[$i]["titlee"]=$ROW[title];
$i++;
}
如何通過這段 while程式輸出最上面的json ?
請大家幫看看。
回複討論(解決方案)
上面是組裝的吧,代碼給的不全。 errcode = 0;
errdesc = ""; 這兩個哪裡來的?
你的表數組沒有這個值 errcode = 0; errdesc = "";
你可以列印原數組看看
print_r($listarr);
這個是數組合并的。主要是這部分的內容
data = (
{
"article_url" = "/disease/item/1";
"create_time" = "2014-08-11 11:38:58";
"knowledge_id" = 1;
title = "\U6d4b\U8bd5\U9057\U4f20\U75c5\U5e931";
},
{
"article_url" = "/disease/item/3";
"create_time" = "2014-07-22 15:38:28";
"knowledge_id" = 3;
title = "\U6211\U7684\U9057\U4f20\U77e5\U8bc6";
}
);
json?有??的?法,我想你大概意思是
{ "data":[ { "article_url":"/disease/item/1", "create_time":"2014-08-11 11:38:58", "knowledge_id":"1", "title":"title1" }, { "article_url":"/disease/item/3", "create_time":"2014-08-11 11:38:58", "knowledge_id":"1", "title":"title3" } ], "errcode":"0", "errdesc":""}
/** Json資料格式化 * @param Mixed $data 資料 * @param String $indent 縮排字元,預設4個空格 * @return JSON */ function jsonFormat($data, $indent=null){ // 對數組中每個元素遞迴進行urlencode操作,保護中文字元 array_walk_recursive($data, 'jsonFormatProtect'); // json encode $data = json_encode($data); // 將urlencode的內容進行urldecode $data = urldecode($data); // 縮排處理 $ret = ''; $pos = 0; $length = strlen($data); $indent = isset($indent)? $indent : ' '; $newline = "\n"; $prevchar = ''; $outofquotes = true; for($i=0; $i<=$length; $i++){ $char = substr($data, $i, 1); if($char=='"' && $prevchar!='\\'){ $outofquotes = !$outofquotes; }elseif(($char=='}' || $char==']') && $outofquotes){ $ret .= $newline; $pos --; for($j=0; $j<$pos; $j++){ $ret .= $indent; } } $ret .= $char; if(($char==',' || $char=='{' || $char=='[') && $outofquotes){ $ret .= $newline; if($char=='{' || $char=='['){ $pos ++; } for($j=0; $j<$pos; $j++){ $ret .= $indent; } } $prevchar = $char; } return $ret; } /** 將數組元素進行urlencode * @param String $val */ function jsonFormatProtect(&$val){ if($val!==true && $val!==false && $val!==null){ $val = urlencode($val); } } header('content-type:application/json;charset=utf8'); $result = array('data' => array(array('article_url' => '/disease/item/1','create_time' => '2014-08-11 11:38:58','knowledge_id' => 1,'title' => 'title1'),array('article_url' => '/disease/item/3','create_time' => '2014-08-11 11:38:58','knowledge_id' => 1,'title' => 'title3'),),'errcode' => 0,'errdesc' => '');echo jsonFormat($result);
如果不需要格式?,可以
echo jsonFormat($result);
改?
echo json_encode($result);
即可。
上面的function都可以不用了。
搞定,謝謝。
如果不需要格式?,可以
echo jsonFormat($result);
改?
echo json_encode($result);
即可。
上面的function都可以不用了。