PHP JSON无法正确解码

时间:2014-12-30 02:43:46

标签: php json

我正在尝试使用PHP对这个JSON数据进行顶级解码,但它没有返回任何内容:

{ "message" : "",
  "result" : [ { "Ask" : 0.040400209999999999,
        "BaseVolume" : 456.53976963999997,
        "Bid" : 0.040200010000000001,
        "Created" : "2014-12-19T03:48:49.13",
        "High" : 0.044610999999999998,
        "Last" : 0.040400199999999997,
        "Low" : 0.037999999999999999,
        "MarketName" : "BTC-XPY",
        "OpenBuyOrders" : 194,
        "OpenSellOrders" : 520,
        "PrevDay" : 0.042073039999999999,
        "TimeStamp" : "2014-12-30T02:45:32.983",
        "Volume" : 11072.491576779999
      } ],
  "success" : true
}

这是我到目前为止所做的:

$pricejson = file_get_contents('https://bittrex.com/api/v1.1/public/getmarketsummary?market=btc-xpy');
$price = json_decode($pricejson, true);
echo $price->result->Last;

当我打开包含此代码的php文件时,什么都没有。如果我使用echo $pricejson,我会打印出整个内容,所以我肯定有数据。

有什么问题?

1 个答案:

答案 0 :(得分:3)

json_decode的第二个参数强制将所有对象解析为关联数组,因此您需要使用数组表示法访问它。另外result总是一个数组,所以你需要循环它或通过索引访问它:

$price = json_decode($pricejson, true);
// print the first price
echo $price['result'][0]['Last'];

// print all prices:
foreach ($price['result'] as $data) {
   echo $data['Last'];
}

或者如果你想混合使用对象/数组:

$price = json_decode($pricejson);
echo $price->result[0]->Last;

// print all prices:
foreach ($price->result as $data) {
   echo $data->Last;
}

除此之外,还有一个json解析错误。您可能还需要确保正确解析您获得的JSON。