收获 php API 数组到 json
Harvest php API array to json
使用 Harvest php API http://mdbitz.com/harvest-api/examples/ 和我的 harvest php 数组打印以下数据:
$myresult = $harvestAPI->getUser($client_id);
$data = $myresult->get( "data" );
print_r($data);
数据:
Harvest_User Object ( [_root:protected]
=> user [_convert:protected]
=> 1 [_values:protected]
=> Array ( [id]
=> 999 [email]
=> user@example.com [created-at]
=> 2014-06-12T20:00:00Z [is-admin]
=> false [first-name]
=> John [last-name]
=> Smith [timezone]
=> Mountain Time (US & Canada) [is-contractor]
=> false [telephone]
=> [is-active]
=> true [has-access-to-all-future-projects]
=> false [default-hourly-rate]
=> 200.0 [department]
=> Development [dev]
=> false [updated-at]
=> 2015-06-15T18:00:00Z [cost-rate]
=> 100.0 ) )
但是当使用 json class 将其转换为 json 时,它让我感到空洞 {} 知道发生了什么吗?
$dataJSON = json_encode($data);
print_r($dataJSON);
它不起作用,因为所有属性都受到保护。 print_r
是一个特殊的调试函数,可以显示受保护的属性,而 json_encode
只能读取 public 属性。由于您的 Harvest_User
对象没有任何 public 属性,因此 JSON 对象是空的。
Harvest_User
class inherits from Harvest_Abstract
, which again implements the magic __get
and __set
方法。不幸的是,json_encode
不能使用它们,因为它甚至不知道要查找哪些变量。
要解决您的问题,您可以编写一个帮助程序 class 将您的 Harvest 对象转换为普通 PHP 对象,然后将它们编码为 JSON.
您可能还想为 Harvest 创建错误报告并要求他们实施 Serializable
and/or JsonSerializable
。
使用 Harvest php API http://mdbitz.com/harvest-api/examples/ 和我的 harvest php 数组打印以下数据:
$myresult = $harvestAPI->getUser($client_id);
$data = $myresult->get( "data" );
print_r($data);
数据:
Harvest_User Object ( [_root:protected]
=> user [_convert:protected]
=> 1 [_values:protected]
=> Array ( [id]
=> 999 [email]
=> user@example.com [created-at]
=> 2014-06-12T20:00:00Z [is-admin]
=> false [first-name]
=> John [last-name]
=> Smith [timezone]
=> Mountain Time (US & Canada) [is-contractor]
=> false [telephone]
=> [is-active]
=> true [has-access-to-all-future-projects]
=> false [default-hourly-rate]
=> 200.0 [department]
=> Development [dev]
=> false [updated-at]
=> 2015-06-15T18:00:00Z [cost-rate]
=> 100.0 ) )
但是当使用 json class 将其转换为 json 时,它让我感到空洞 {} 知道发生了什么吗?
$dataJSON = json_encode($data);
print_r($dataJSON);
它不起作用,因为所有属性都受到保护。 print_r
是一个特殊的调试函数,可以显示受保护的属性,而 json_encode
只能读取 public 属性。由于您的 Harvest_User
对象没有任何 public 属性,因此 JSON 对象是空的。
Harvest_User
class inherits from Harvest_Abstract
, which again implements the magic __get
and __set
方法。不幸的是,json_encode
不能使用它们,因为它甚至不知道要查找哪些变量。
要解决您的问题,您可以编写一个帮助程序 class 将您的 Harvest 对象转换为普通 PHP 对象,然后将它们编码为 JSON.
您可能还想为 Harvest 创建错误报告并要求他们实施 Serializable
and/or JsonSerializable
。