用一个方括号进行PHP JSON解码
好的,我正在用php获取市场数据,它工作得很好,但我遇到了一个api,它提供了这一点用一个方括号进行PHP JSON解码,php,arrays,json,function,Php,Arrays,Json,Function,好的,我正在用php获取市场数据,它工作得很好,但我遇到了一个api,它提供了这一点 通常我用这个代码来抓取它 $data = curl_exec($c); curl_close($c); $obj = json_decode($data); $doge = print_r($obj->{'last_price'}."\n", true); 但是它不工作,因为括号中有“[”。没有其他api有这些 如何绕过它们获取信息?当您对对象进行打印时,您可以看到这样的结构 Array (
通常我用这个代码来抓取它
$data = curl_exec($c);
curl_close($c);
$obj = json_decode($data);
$doge = print_r($obj->{'last_price'}."\n", true);
但是它不工作,因为括号中有“[”
。没有其他api有这些
如何绕过它们获取信息?当您对对象进行打印时,您可以看到这样的结构
Array
(
[0] => stdClass Object
(
[market_id] => 16
[code] => DOGE
[last_price] => 0.00000136
[yesterday_price] => 0.00000140
[exchange] => BTC
[change] => -2.86
[24hhigh] => 0.00000150
[24hlow] => 0.00000132
[24hvol] => 6.544
)
)
因此,要访问它,您可以看到最后一个\u price
位于数组索引0
下,因此您需要在对象之前提供索引
访问方式。。
(或)
您得到的响应实际上是一个数组
。首先(在您的例子中是唯一一个)元素是对象
。因此,要访问此对象
,只需调用:
$array = json_decode($data);
$obj = $array[0];
$doge = print_r($obj->{'last_price'}."\n", true);
所以,var_在解码之前转储数据,看看它是什么类型的。obj[0]->{“last_price”}
它只是一个包装数组。仅供参考,“没有其他API有这些括号”是不正确的。并且确实出现在无数的API中。你可能只是第一次看到它们,这很好。你应该使用json_decode($json,true)因此,json中的jsonArray也得到了处理。实际上,您应该解释OP做错了什么,而不仅仅是给出代码解决方案。@MikeBrant,谢谢。
echo $doge =$obj[0]->{'last_price'};
$array = json_decode($data);
$obj = $array[0];
$doge = print_r($obj->{'last_price'}."\n", true);