1

timelineJS需要指定的 JSON 格式。到目前为止,使用此 php 代码,我能够生成如下输出:

$rs = mysql_query("SELECT filename, data AS added,  f.image as media, f.info_hash AS hash, c.name AS category FROM xbtit_files f LEFT JOIN xbtit_categories c ON f.category = c.id WHERE f.uploader =  '2' ORDER BY added DESC"); 

$json_arr = array();
while($row = mysql_fetch_array($rs)) { 
if (strlen(htmlspecialchars($row[filename])) > 30)
  $t_name  = substr(htmlspecialchars($row[filename]), 0, 30)."...";
else
  $t_name  = htmlspecialchars($row[filename]);

$row_arr['credit'] = $row['hash'];
$row_arr['caption'] = $row['category'];
$row_arr['media'] = $row['media'];
$row_arr['headline'] = $t_name;
$row_arr['startDate'] = $row[added];
array_push($json_arr,$row_arr);
} 
$json = '{"timeline":
    {
        "headline":"UPLOADER1",
        "type":"default",
        "text":"Show all uploads of this uploader",
        "asset": {
            "media":"http://localhost/torrent/torrentimg/49ac3aa95ec6d2ae56772a158b41d4aa62a7b78c.jpg",
            "credit":"Credit Name Goes Here",
            "caption":"Caption text goes here"
            },
        "date":
            '.json_encode($json_arr).'

    }}';
echo $json;

这给出了这样的输出:

{
"timeline": {
    "headline": "UPLOADER1",
    "type": "default",
    "text": "Show all uploads of this uploader",
    "asset": {
        "media": "http://localhost/torrent/torrentimg/49ac3aa95ec6d2ae56772a158b41d4aa62a7b78c.jpg",
        "credit": "Credit Name Goes Here",
        "caption": "Caption text goes here"
    },
    "date": [
        {
            "headline": "Avatar",
            "startDate": "2012-06-26 12:03:13"
        },
        {
            "headline": "Rio BRRIP x264-1080p-2011",
            "startDate": "2012-06-26 11:59:19"
        },
        {
            "headline": "The Number 23 (2007)",
            "startDate": "2012-06-26 11:50:44"
        },
        {
            "headline": "Fate Stay night",
            "startDate": "2012-06-26 11:41:01"
        }
    ]
}
}

我怎么能得到这样的东西:

{
"timeline":
{
    "headline":"UPLOADER 1",
    "type":"default",
    "text":"Name of the Uploader",
    "startDate":"2012,1,26",
    "date": [
        {
            "startDate":"2012,2,30",
            "headline":"Hanky Panky (Torrent Name)",
            "text":"<p>Some description of the torrent.</p>",
            "asset":
            {
                "media":"Poster.jpg",
                "credit":"",
                "caption":""
            }
        },
        {
            "startDate":"2012,2,18",
            "headline":"Torrent Name 2",
            "text":"This movie was released on... The actors are....",
            "asset":
            {
                "media":"Poster1.jpg",
                "credit":"",
                "caption":"Directed and Edited by Matt Mayer, Produced by Seth Keim, Written by Eliot Glazer. Featuring Eliot and Ilana Glazer, who are siblings, not married."
            }
        }
    ]
}
}

请注意:对象资产中有 JSON 对象。这怎么可能实现?有人可以帮忙吗??

4

2 回答 2

2

json_encode() 可以毫无问题地将 PHP 多维数组转换为 json 字符串,因此创建具有所需结构的 PHP 数组并在其上调用 json_encode。

于 2013-03-03T20:04:04.953 回答
1

我通过修改user1660584建议的数组找到了解决方案。谢谢。

多维数组将如下所示:

$c['timeline']['headline']= 'uploader1';
$c['timeline']['type'] = 'Default Type';
$c['timeline']['text'] = 'Some Text about the uploader';
$c['timeline']['asset']['media'] = 'torrentimg/49ac3aa95ec6d2ae56772a158b41d4aa62a7b78c.jpg';
$c['timeline']['asset']['caption'] = 'Assets consists of media files, caption and categories';
$c['timeline']['date'] = array(array(
    "startDate"=>'asfsf as fa',
    "headline"=>'kjahdas a',
    "text"=>'ahidahs kahs',
    "asset" => array(
                "media"=> 'image.png',
                "credit"=> 'Category',
                "caption"=> 'Some Text'
    )
),array(
    "startDate"=>'asfsf as fa',
    "headline"=>'kjahdas a',
    "text"=>'ahidahs kahs',
    "asset" => array(
                "media"=> 'image.png',
                "credit"=> 'Category',
                "caption"=> 'Some Text'
    )
));
echo json_encode($c);

我只需要将它放在带有 sql relult 的循环中。

于 2013-03-05T12:49:39.283 回答