【问题标题】:JSON decode to PHP not workingJSON解码到PHP不起作用
【发布时间】:2014-09-12 22:40:59
【问题描述】:

我尝试将 JSON 对象放入 PHP 变量中,但它不起作用。当我var_dump 它时,它会显示NULL

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 文件中提到的内容?

【问题讨论】:

  • 正如您在输出中看到的,$data-&gt;tplc 是另一个包含 JSON 的 字符串
  • 希望我能对此进行测试,该 URL 不会为我返回任何数据
  • @wavemode 是真的,我现在明白了。我很高兴你这么说,因为我看到你必须登录 Rockstar。我认为我的“网络主机”没有登录 Rockstar 可以这么说。否则它会工作吗?我将在 localhost 上测试它并再次响应。

标签: php json object


【解决方案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;
?>

【讨论】:

  • 还是NULL?也许我必须先访问一个具有值的对象。我如何访问钱部分,因为我看到它是一个数组。可以说它有多个“项目”。
  • @Αράπης 确保 URL 实际上正在返回数据(例如 echo $json;)。对我来说,它只返回一个空字符串。我添加了具体如何获取货币价值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-21
  • 1970-01-01
  • 2019-01-05
  • 1970-01-01
  • 2018-09-22
相关资源
最近更新 更多