无法从 Json 中提取数据
Can't extract data from Json
我无法从 json 中提取从 api 中获取的数据。
我尝试了几个小时,尝试了各种格式。阅读像 这样的 Whosebug 线程,但我看不出我做错了什么。
这是目前的代码:
$api_results = '{"status":"0000","data":{"opening_price":"6998000","closing_price":"7270000","min_price":"6750000","max_price":"7997000","average_price":"7188302.5804","units_traded":"78484.9241002","volume_1day":"78484.9241002","volume_7day":"335611.84181738","buy_price":"7268000","sell_price":"7274000","date":"1510563513031"}}';
$results = json_decode($api_results, true);
// Some variations I tried:
var_dump($results->status[1]);
var_dump($results->data[1]->opening_price);
var_dump($results["data"][1]["opening_price"]);
最终结果:NULL NULL NULL
我做错了什么?
感谢您的解答!我会投票给工作人员。看来我对格式感到困惑!
<?php
$api_results = '{"status":"0000","data":{"opening_price":"6998000","closing_price":"7270000","min_price":"6750000","max_price":"7997000","average_price":"7188302.5804","units_traded":"78484.9241002","volume_1day":"78484.9241002","volume_7day":"335611.84181738","buy_price":"7268000","sell_price":"7274000","date":"1510563513031"}}';
$results = json_decode($api_results, true);
print_r($results['status']);
echo "</br>";
print_r($results['data']['opening_price']);
尝试以这种方式访问您的数组。
输出是:
0000
6998000
留意嵌套数组。您需要先访问它们的父数组才能获取它们的值。
从 json_decode
中删除 true 这样你就会得到像 Demo
这样的对象结果
$results = json_decode($api_results);
var_dump($results->status);
var_dump($results->data->opening_price);
当您将 json_decode
与 true 一起使用时,返回的对象将被转换为关联数组。
从 json_decode 中删除 true 并尝试这样的操作:
var_dump($results->status);
var_dump($results->data->opening_price);
如果您看到 {},它指的是对象,而 [] 表示它是一个数组。您试图将所有内容都显示为数组
您已将 json_decode()
的第二个参数设置为 true
。这意味着 json 将被转换为数组,因此您无法使用指针 ->
访问数据(因为它不是对象)。
您可以这样访问数据:
var_dump($results['status'][0]);
var_dump($results['data'][0]['opening_price']);
P.S:尝试var_dump($results)
查看确切的数据,这样您就知道如何访问每个属性。
您是否阅读了 json_decode()
(or, at least, the accepted answer of the question you linked)? If you pass TRUE
as the second argument to json_decode()
(and there is no decent reason to not pass it) then it decodes the JSON to associative arrays 而不是对象的文档。
可以使用 the square bracket syntax.
访问 PHP 数组中的元素
对 print_r($results)
的简单调用说明其结构:
Array
(
[status] => 0000
[data] => Array
(
[opening_price] => 6998000
[closing_price] => 7270000
[min_price] => 6750000
[max_price] => 7997000
[average_price] => 7188302.5804
[units_traded] => 78484.9241002
[volume_1day] => 78484.9241002
[volume_7day] => 335611.84181738
[buy_price] => 7268000
[sell_price] => 7274000
[date] => 1510563513031
)
)
现在,访问它的项目是小菜一碟:
echo($results['status']);
# 0000
echo($results['data']['opening_price']);
# 6998000
像我认为的那样使用这段代码..
<?php
$api_results = '{"status":"0000","data":{"opening_price":"6998000","closing_price":"7270000","min_price":"6750000","max_price":"7997000","average_price":"7188302.5804","units_traded":"78484.9241002","volume_1day":"78484.9241002","volume_7day":"335611.84181738","buy_price":"7268000","sell_price":"7274000","date":"1510563513031"}}';
$results = json_decode($api_results);
print_r($results);
var_dump($results->status);
$var = $results->data;
var_dump($var->opening_price);
?>
stdClass Object
(
[status] => 0000
[data] => stdClass Object
(
[opening_price] => 6998000
[closing_price] => 7270000
[min_price] => 6750000
[max_price] => 7997000
[average_price] => 7188302.5804
[units_traded] => 78484.9241002
[volume_1day] => 78484.9241002
[volume_7day] => 335611.84181738
[buy_price] => 7268000
[sell_price] => 7274000
[date] => 1510563513031
)
)
string(4) "0000"
string(7) "6998000"
我无法从 json 中提取从 api 中获取的数据。
我尝试了几个小时,尝试了各种格式。阅读像
这是目前的代码:
$api_results = '{"status":"0000","data":{"opening_price":"6998000","closing_price":"7270000","min_price":"6750000","max_price":"7997000","average_price":"7188302.5804","units_traded":"78484.9241002","volume_1day":"78484.9241002","volume_7day":"335611.84181738","buy_price":"7268000","sell_price":"7274000","date":"1510563513031"}}';
$results = json_decode($api_results, true);
// Some variations I tried:
var_dump($results->status[1]);
var_dump($results->data[1]->opening_price);
var_dump($results["data"][1]["opening_price"]);
最终结果:NULL NULL NULL
我做错了什么?
感谢您的解答!我会投票给工作人员。看来我对格式感到困惑!
<?php
$api_results = '{"status":"0000","data":{"opening_price":"6998000","closing_price":"7270000","min_price":"6750000","max_price":"7997000","average_price":"7188302.5804","units_traded":"78484.9241002","volume_1day":"78484.9241002","volume_7day":"335611.84181738","buy_price":"7268000","sell_price":"7274000","date":"1510563513031"}}';
$results = json_decode($api_results, true);
print_r($results['status']);
echo "</br>";
print_r($results['data']['opening_price']);
尝试以这种方式访问您的数组。
输出是:
0000
6998000
留意嵌套数组。您需要先访问它们的父数组才能获取它们的值。
从 json_decode
中删除 true 这样你就会得到像 Demo
$results = json_decode($api_results);
var_dump($results->status);
var_dump($results->data->opening_price);
当您将 json_decode
与 true 一起使用时,返回的对象将被转换为关联数组。
从 json_decode 中删除 true 并尝试这样的操作:
var_dump($results->status);
var_dump($results->data->opening_price);
如果您看到 {},它指的是对象,而 [] 表示它是一个数组。您试图将所有内容都显示为数组
您已将 json_decode()
的第二个参数设置为 true
。这意味着 json 将被转换为数组,因此您无法使用指针 ->
访问数据(因为它不是对象)。
您可以这样访问数据:
var_dump($results['status'][0]);
var_dump($results['data'][0]['opening_price']);
P.S:尝试var_dump($results)
查看确切的数据,这样您就知道如何访问每个属性。
您是否阅读了 json_decode()
(or, at least, the accepted answer of the question you linked)? If you pass TRUE
as the second argument to json_decode()
(and there is no decent reason to not pass it) then it decodes the JSON to associative arrays 而不是对象的文档。
可以使用 the square bracket syntax.
访问 PHP 数组中的元素对 print_r($results)
的简单调用说明其结构:
Array
(
[status] => 0000
[data] => Array
(
[opening_price] => 6998000
[closing_price] => 7270000
[min_price] => 6750000
[max_price] => 7997000
[average_price] => 7188302.5804
[units_traded] => 78484.9241002
[volume_1day] => 78484.9241002
[volume_7day] => 335611.84181738
[buy_price] => 7268000
[sell_price] => 7274000
[date] => 1510563513031
)
)
现在,访问它的项目是小菜一碟:
echo($results['status']);
# 0000
echo($results['data']['opening_price']);
# 6998000
像我认为的那样使用这段代码..
<?php
$api_results = '{"status":"0000","data":{"opening_price":"6998000","closing_price":"7270000","min_price":"6750000","max_price":"7997000","average_price":"7188302.5804","units_traded":"78484.9241002","volume_1day":"78484.9241002","volume_7day":"335611.84181738","buy_price":"7268000","sell_price":"7274000","date":"1510563513031"}}';
$results = json_decode($api_results);
print_r($results);
var_dump($results->status);
$var = $results->data;
var_dump($var->opening_price);
?>
stdClass Object
(
[status] => 0000
[data] => stdClass Object
(
[opening_price] => 6998000
[closing_price] => 7270000
[min_price] => 6750000
[max_price] => 7997000
[average_price] => 7188302.5804
[units_traded] => 78484.9241002
[volume_1day] => 78484.9241002
[volume_7day] => 335611.84181738
[buy_price] => 7268000
[sell_price] => 7274000
[date] => 1510563513031
)
)
string(4) "0000"
string(7) "6998000"