如何在编码之前将名称/标签添加到JSON数据

时间:2012-01-06 18:27:47

标签: php json

我很擅长使用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);

我错过了哪一部分?我确信这很简单。谢谢大家。

1 个答案:

答案 0 :(得分:4)

如果$aColumns[$i]对应于数据库查询中的name列,请尝试使用

$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]]