无法从JSON获得价值

时间:2014-03-18 08:41:55

标签: php json

我需要一些帮助才能访问api。 http://market.huobi.com/staticmarket/detail.html 用PHP。

$json = file_get_contents("http://market.huobi.com/staticmarket/detail.html"); 
$obj = json_decode($json);

以下是api响应的一小部分样本。

$obj =
{
    "sells": [
        {
            "price": 3840,
            "level": 0,
            "amount": 1
        },
        {
            "price": "3840.05",
            "level": 0,
            "amount": 0.287
        },
        {
            "price": 3841,
            "level": 0,
            "amount": 0.1
        } ],
 "p_new": 3838,
    "level": -72.12,
    "amount": 82792,
    "total": 321774060.34653,
    "amp": -2,
    "p_open": 3910.12,
    "p_high": 3925,
    "p_low": 3809.99,
    "p_last": 3910.12
}

            echo "Ask     " . $obj->sells[0]->price; // does not work
            echo "Volume" . $obj->amount;// does not work

帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

您正在调用的API是返回JSONP数据,而不是JSON数据。

JSONP数据如下:

somefunction(JSONdata)

您需要删除函数调用包装器。

$jsonp = file_get_contents("http://market.huobi.com/staticmarket/detail.html");
preg_match('/^.*?\((.*)\)/s', $jsonp, $match);
$json = $match[1];
$obj = json_decode($json);

echo "Ask     " . $obj->sells[0]->price . '<br>';
echo "Volume  " . $obj->amount;