我正在寻找一种从class属性的PHP数组中读取数据的解决方案。
请求:
$accounts = $client->getAccounts();
下面是生成的数组:
Coinbase\Wallet\Resource\ResourceCollection Object
(
[previousUri:Coinbase\Wallet\Resource\ResourceCollection:private] =>
[nextUri:Coinbase\Wallet\Resource\ResourceCollection:private] =>
[resources:Coinbase\Wallet\Resource\ResourceCollection:private] => Array
(
[0] => Coinbase\Wallet\Resource\Account Object
(
[name:Coinbase\Wallet\Resource\Account:private] => BTC Wallet
[primary:Coinbase\Wallet\Resource\Account:private] => 1
[type:Coinbase\Wallet\Resource\Account:private] => wallet
[currency:Coinbase\Wallet\Resource\Account:private] => BTC
[balance:Coinbase\Wallet\Resource\Account:private] => Coinbase\Wallet\Value\Money Object
(
[amount:Coinbase\Wallet\Value\Money:private] => 0.00001
[currency:Coinbase\Wallet\Value\Money:private] => BTC
)
[nativeBalance:Coinbase\Wallet\Resource\Account:private] => Coinbase\Wallet\Value\Money Object
(
[amount:Coinbase\Wallet\Value\Money:private] => 0.01
[currency:Coinbase\Wallet\Value\Money:private] => CHF
)
[createdAt:Coinbase\Wallet\Resource\Account:private] => DateTime Object
(
[date] => 2017-11-04 01:35:13.000000
[timezone_type] => 2
[timezone] => Z
)
[updatedAt:Coinbase\Wallet\Resource\Account:private] => DateTime Object
(
[date] => 2017-11-04 14:24:11.000000
[timezone_type] => 2
[timezone] => Z
)
[id:Coinbase\Wallet\Resource\Resource:private] => XXXXXXXXX-XXXXXXXXXX-XXXXXXXXXX
[resource:Coinbase\Wallet\Resource\Resource:private] => account
[resourcePath:Coinbase\Wallet\Resource\Resource:private] => /v2/accounts/XXXXXXXXX-XXXXXXXXXX-XXXXXXXXXX
[rawData:Coinbase\Wallet\Resource\Resource:private] => Array
(
[id] => XXXXXXXXX-XXXXXXXXXX-XXXXXXXXXX
[name] => BTC Wallet
[primary] => 1
[type] => wallet
[currency] => BTC
[balance] => Array
(
[amount] => 0.001
[currency] => BTC
)
[created_at] => 2017-11-04T01:35:13Z
[updated_at] => 2017-11-04T14:24:11Z
[resource] => account
[resource_path] => /v2/accounts/XXXXXXXXX-XXXXXXXXXX-XXXXXXXXXX
[native_balance] => Array
(
[amount] => 0.01
[currency] => CHF
)
)
)
)
)
现在我想读取值为XXXXXXXXX-XXXXXXXXXX-XXXXXXXXXX的$accounts['rawData']['id']
,我已经尝试将这些响应转换成如下所示的JSON数组:
$aaax = json_encode($accounts);
$bbbx = json_decode($aaax, true);
但它不起作用。在……上面
print_r($bbbx)
我只收到一个
Array
(
)
您知道如何从输出数组读取/获取数据吗?
发布于 2018-06-24 08:13:24
问题是您的类的所有属性都有private
visibility。这意味着类外部的代码不能读取或修改这些属性。
您需要修改您的类以使您的代码可以访问这些属性,或者至少告诉PHP在运行json_encode()
时包含私有属性。假设您不能这样做,因为这是一个库,而不是您编写的代码,那么您需要将这个类包装在一个实现JsonSerializable
的包装类中。
发布于 2018-06-25 02:57:25
感谢Ed Cottrell的帮助以及对技术术语的更正。这对我来说是最好的学习方式。我试着用JsonSerializable::jsonSerialize来解决这个问题。不可能(对我来说...)
现在我找到了访问数据的另一种解决方案。我使用的是php包装器:https://github.com/coinbase/coinbase-php
在RawData上有一种访问方法
$data = $client->decodeLastResponse();
在我的例子中,有以下代码:
$accounts = $client->getAccounts();
$dataX = $client->decodeLastResponse();
print_r($dataX);
因此,我获得了以下响应:
Array
(
[pagination] => Array
(
[ending_before] =>
[starting_after] =>
[limit] => 25
[order] => desc
[previous_uri] =>
[next_uri] =>
)
[data] => Array
(
[0] => Array
(
[id] => XXXXXXXXXXXXXXXXXXX
[name] => BTC Wallet
[primary] => 1
[type] => wallet
[currency] => BTC
[balance] => Array
(
[amount] => 0.001
[currency] => BTC
)
[created_at] => 2017-11-04T01:35:13Z
[updated_at] => 2017-11-04T14:24:11Z
[resource] => account
[resource_path] => /v2/accounts/XXXXXXXXXXXXXXXXXXX
[native_balance] => Array
(
[amount] => 0.001
[currency] => CHF
)
)
)
)
所以它是完全可访问的再次感谢你(为我打开了思路..:-)我通过谷歌搜索"coinbase jsonserialize“找到了这个解决方案...这是你的输入..
https://stackoverflow.com/questions/51005971
复制相似问题