2014-09-12 30 views
1

我尝试将JSON对象放入一个PHP变量,它不工作。当我var_dump它,它说NULLJSON解码为PHP不工作

PHP:

<?php 
$json = utf8_encode(file_get_contents('http://socialclub.rockstargames.com/ajax/stat/1/profile_body/sta1/drantifat')); 
$data = json_decode($json, false); 

$money = $data->tplc->stats; // -> What do i have to do to reach the id:GTA Online Cash and use the val: $33.9K ? 
?> 

JSON文件如:(它随时间变化)

{"cid":0,"ttl":"Grand Theft Auto V", 
"ishs":false,"issa":false,"istc":false,"htl":true,"tlc":"text", 
"tlt":"View Stats","tlh":"/member/drantifat/games/gtav/career/overview", 
"iso":false,"cmng":false,"order":0,"uid":0,"ttc":0, 
"tplc":"{\"game\":\"GTAV\",\"stats\":[{\"id\":\"Game Progress\",\"val\":\"58.77%\"}, 
{\"id\":\"Missions Passed\",\"val\":\"55\"},{\"id\":\"Playing Time\",\"val\":\"29:00:33\"}, 
{\"id\":\"GTA Online RP\",\"val\":\"2.4M\"},{\"id\":\"GTA Online Rank\",\"val\":\"128\"}, 
{\"id\":\"GTA Online Cash\",\"val\":\"$33.9K\"}, 
{\"id\":\"GTA Online Playing Time\",\"val\":\"529:44:12\"}], 
\"url\":\"/member/drantifat/games/gtav/career/overview\"}","isa":false,"cnt":""} 

谁能还帮我与我的PHP文件中已经提到过?

+3

正如你可以在输出时,看到'$数据 - > tplc'是另一个**字符串包含JSON **。 – 2014-09-12 22:46:44

+1

希望我可以测试这个,该URL没有返回任何数据 – wavemode 2014-09-12 22:50:28

+0

@wavemode它的真实,我明白了。我很高兴你说过,因为我看到你必须登录到Rockstar。我认为我的'虚拟主机'没有登录到Rockstar让我们这么说。否则,它会工作?我会在localhost上测试它,并会再次回应。 – 2014-09-12 22:57:50

回答

1

tplc不是JSON对象,它是一个本身为JSON的字符串。

<?php 
$json = utf8_encode(file_get_contents('http://socialclub.rockstargames.com/ajax/stat/1/profile_body/sta1/drantifat')); 
$data = json_decode($json, false); 
$tplc = json_decode($data->tplc); 
$money = $tplc->stats; 
?> 

要明确得到这笔钱值:

<?php 
$json = utf8_encode(file_get_contents('http://socialclub.rockstargames.com/ajax/stat/1/profile_body/sta1/drantifat')); 
$data = json_decode($json, false); 
$tplc = json_decode($data->tplc); 
$stats = $tplc->stats; 
foreach ($tplc->stats as $stat) { 
    if ($stat->id == 'GTA Online Cash') { 
     $money = $stat->val; 
     break; 
    } 
} 
echo $money; 
?> 
+0

还是'NULL'?也许我必须先访问一个带有值的对象。我如何访问钱的一部分,因为我看到它是一个数组。它有多个'项目'可以说。 – 2014-09-12 22:53:21

+0

@Αράπης确保URL实际上是返回数据(例如'echo $ json;')。对我来说,它只是返回一个空字符串。我增加了如何专门访问货币价值。 – AlliterativeAlice 2014-09-12 22:58:28