我对处理JSON还很陌生。
我当前的脚本输出以下JSON:-
{"comments":[[17.9775280899,"2011-09-28 14:38:41","admin","1","2","http:'/'/www.example.com'/members'/admin'/","http:'/'/www.example.com'/wp-content'/uploads'/avatars'/1'/8bb11e958a26913e2c13393014e854d5-bpthumb.jpg","admin"],
[0.749063670412,"2011-09-28 14:43:11","admin","1","3","http:'/'/www.example.com'/members'/admin'/","http:'/'/www.example.com'/wp-content'/uploads'/avatars'/1'/8bb11e958a26913e2c13393014e854d5-bpthumb.jpg","admin"],
[36.329588015,"2011-10-06 14:15:12","admin","1","10","http:'/'/www.example.com'/members'/admin'/","http:'/'/www.example.com'/wp-content'/uploads'/avatars'/1'/8bb11e958a26913e2c13393014e854d5-bpthumb.jpg","admin"]]}
然而,我想为每条数据添加一个名称/标签,例如"leftPercent"、"timestamp"、"username"等。
这是我的脚本的相关部分:
首先我从数据库中获取数据。。。
$sQuery = "
select cp_comments.*,users.user_login, users.user_url, users.display_name, users.ID as avatar
from ".$wpdb->prefix."cp_comments cp_comments
left join ".$wpdb->prefix."users users on users.ID=cp_comments.uid
where songid='$id'
order by cp_comments.id asc
";
$rResult = mysql_query( $sQuery, $gaSql['link'] ) or die(mysql_error());
然后我对数据进行一些自定义格式设置。(稍后还会添加其他项目,目前只是评论。
$output = array(
"comments" => array()
);
while ( $aRow = mysql_fetch_array( $rResult ) )
{
$row = array();
for ( $i=0 ; $i<count($aColumns) ; $i++ )
{
if ( $aColumns[$i] == "playtime" )
{
/* Special output formatting for 'playtime' column */
$row[] = ($aRow[ $aColumns[$i] ]) / $duration * 100;
}
else if ( $aColumns[$i] == "avatar" )
{
/* Special output to render Avatar by user id */
$row[] = commentplayer_get_user_avatar($aRow[ $aColumns[$i] ]);
}
else if ( $aColumns[$i] != ' ' )
{
/* General output */
$row[] = $aRow[ $aColumns[$i] ];
}
}
$output['comments'][] = $row;
}
最后我对JSON:进行了编码
echo json_encode($output);
我缺了什么部分?我相信这很简单。谢谢大家。
如果$aColumns[$i]
对应于数据库查询中的名称列,则尝试此
$output = array(
"comments" => array()
);
while ( $aRow = mysql_fetch_array( $rResult ) )
{
$row = array();
for ( $i=0 ; $i<count($aColumns) ; $i++ )
{
if ( $aColumns[$i] == "playtime" )
{
/* Special output formatting for 'playtime' column */
$row[$aColumns[$i]] = ($aRow[ $aColumns[$i] ]) / $duration * 100;
}
else if ( $aColumns[$i] == "avatar" )
{
/* Special output to render Avatar by user id */
$row[$aColumns[$i]] = commentplayer_get_user_avatar($aRow[ $aColumns[$i] ]);
}
else if ( $aColumns[$i] != ' ' )
{
/* General output */
$row[$aColumns[$i]] = $aRow[ $aColumns[$i] ];
}
}
$output['comments'][] = $row;
}
我将$row[]
更改为$row[$aColumns[$i]]