我正在使用一个 API,它以 JSON 格式为我提供数据,然后我将其json_decode()
为以下格式:
[stockData] => stdClass Object
(
[data] => stdClass Object
(
[PS3] => stdClass Object
(
[2015-01-26T20:45:01Z] => stdClass Object
(
[AMU] => 999.76
[ZIT] => 3.63
)
)
)
[status] => stdClass Object
(
[code] => 200
[text] => ok
)
)
我需要某种方法来获取2015-01-26T20:45:01Z
(一直在变化)。
我已经尝试get_Class()
对象,例如:
get_Class($bawsaq->stockData->data->PS3)
(实际上在foreach
循环中)
但返回的只是:"stdClass"而不是名称。如何获取对象的名称?
它实际上不是对象的类:它是包含stdClass
对象的属性的名称。因此,您需要从$bawsaq->stockData->data->PS3
获取第一个对象属性名称。实际上,这有点棘手。
使用数组更好。如果使用 json_decode
的 $assoc
参数,则可以在出现 JSON 对象时获取关联数组而不是对象。这在 PHP 中更容易处理。
$bawsaq = json_decode($jsonData, true);
您可以使用 key
获取密钥名称:
$dateTime = key($bawsaq['stockData']['data']['PS3']);
解码 JSON 时,请使用
$bawsaq = json_decode($json, true);
这将返回关联数组,而不是所有 JSON 对象的stdClass
对象。然后你可以使用
$keys = array_keys($bawsaq['stockData']['data'];
$date = $keys[0];
您可以使用
get_object_vars方法。
$obj = new stdClass();
$obj->field1 = 'value1';
print_r(get_object_vars($obj));
结果:
Array
(
[field1] => value1
)
您可以使用第二个参数来json_decode
。这会将数据作为关联数组而不是对象列表返回,因此您可以简单地使用
$input = json_decode($jsonInput, true);
$key = key($input['stockData']['data']['PS3']);
$data = $input['stockData']['data']['PS3'][$key];
或一个 foreach 循环。另请参阅 php.net key
。