【问题标题】:PHP JSON parsing (number attributes?)PHP JSON解析(数字属性?)
【发布时间】:2017-11-18 20:34:07
【问题描述】:

您好,我有一个这样的 JSON 字符串:

{
"vidID": "CevxZvSJLk8",
"vidTitle": "Katy Perry - Roar (Official)",
"vidInfo": {
    "0": {
        "rSize": "67.79 MB",
        "quality": "720",
        "directurl": "https://r2---sn-5uh5o-f5f6.googlevideo.com/videoplayback?ipbits=0&mm=31&mn=sn-5uh5o-f5f6&itag=22&mt=1492837642&dur=269.165&id=o-AB1T_kZWIIiA_ihhSlAK4RXegp3Z9A18zn39hF0Aa51G&initcwndbps=197500&pl=21&source=youtube&mv=m&ip=137.74.1.176&mime=video%2Fmp4&ms=au&ratebypass=yes&requiressl=yes&sparams=dur%2Cei%2Cid%2Cinitcwndbps%2Cip%2Cipbits%2Citag%2Clmt%2Cmime%2Cmm%2Cmn%2Cms%2Cmv%2Cpl%2Cratebypass%2Crequiressl%2Csource%2Cupn%2Cexpire&key=yt6&lmt=1478841669593636&upn=Wp652d9rFKo&ei=OuX6WLqMDJaLNK-MmLAE&expire=1492859290&signature=A8B328D48101C553D0659D2D9D1F1B2F249D2035.792897E2CF6BFEFC97C81A90EA9CBF9B76FD0283&type=video%252Fmp4%253B%2Bcodecs%253D%2522avc1.64001F%252C%2Bmp4a.40.2%2522&quality=hd720&title=Katy%2BPerry%2B-%2BRoar%2B%2528Official%2529",
        "dloadUrl": "//downloadmp.org/@download/22-58fae53acfc14-mp4-71087585/videos/CevxZvSJLk8/Katy%2BPerry%2B-%2BRoar%2B%2528Official%2529.mp4",
        "ftype": "mp4",
        "framerate": "",
        "bitrate": "",
        "codec": "",
        "itag": "22",
        "vidid": "CevxZvSJLk8"
    }}}

我正在尝试获取直接 url 的价值。 所以这是我的 PHP 代码:

$obj = json_decode($json);
echo $obj->vidInfo[0]->directurl;

也试过了

echo $obj->vidInfo->0->directurl;

但我无法获取属性直接 url 的值。

【问题讨论】:

  • $obj = json_decode($json,true); echo $obj[0]['vidInfo'][0]['directurl']

标签: php json object


【解决方案1】:

问题是,"0" 不是数字,所以你不能使用普通的数组访问。相反,您必须像访问名称一样访问它。但由于0 不是有效标识符,您必须使用{}-syntax。

echo $obj->vidInfo->{"0"}->directurl;

解决此问题的另一种方法是将true 作为第二个参数传递给json_decode。这样做会返回一个关联数组,而不是对象格式。

$data = json_decode($json, true);
echo $data['vidInfo'][0]['directurl'];

【讨论】:

  • 谢谢,这就是我一直在寻找的东西,我也不知道是谁降级了,为什么。我是stackoverflow的新手,所以我不能投票。
【解决方案2】:

要获得对象形式,试试这个:

var_dump(get_object_vars($obj));

我喜欢将 json 转换为数组。

$array = json_decode($json,true);
echo $array ['vidInfo'][0]['directurl']

剩下的数据在这里:

vidID => string:  $array['vidID'] => CevxZvSJLk8
vidTitle => string:  $array['vidTitle'] => Katy Perry - Roar (Official)
rSize => string:  $array['vidInfo'][0]['rSize'] => 67.79 MB
quality => string:  $array['vidInfo'][0]['quality'] => 720
directurl => string:  $array['vidInfo'][0]['directurl'] => https://r2---sn-5uh5o-f5f6.googlevideo.com/vide truncated 687 char
dloadUrl => string:  $array['vidInfo'][0]['dloadUrl'] => //downloadmp.org/@download/22-58fae53acfc14-mp4 truncated 60 char
ftype => string:  $array['vidInfo'][0]['ftype'] => mp4
framerate => string:  $array['vidInfo'][0]['framerate'] => 
bitrate => string:  $array['vidInfo'][0]['bitrate'] => 
codec => string:  $array['vidInfo'][0]['codec'] => 
itag => string:  $array['vidInfo'][0]['itag'] => 22
vidid => string:  $array['vidInfo'][0]['vidid'] => CevxZvSJLk8

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-09
    • 1970-01-01
    • 2010-11-12
    • 1970-01-01
    • 2019-03-31
    • 1970-01-01
    • 2011-10-04
    • 1970-01-01
    相关资源
    最近更新 更多