Использование Harvest php API http://mdbitz.com/harvest-api/examples/ и мой урожай 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]
=> [email protected] [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 для преобразования его в json я получаю пустое {} представление о том, что происходит?
$dataJSON = json_encode($data);
print_r($dataJSON);
Это не работает, потому что все свойства защищены. В то время как print_r
является специальной функцией отладки и может отображать защищенные свойства, json_encode
может только читать публичные свойства. Как твой Harvest_User
У объекта нет общедоступных свойств, объект JSON пуст.
Harvest_User
класс наследует от Harvest_Abstract
, который снова реализует магия __get
а также __set
методы. К несчастью, json_encode
не может использовать их, потому что он даже не знает, какие переменные искать.
Чтобы решить вашу проблему, вы можете написать вспомогательный класс для преобразования ваших объектов Harvest в простые объекты PHP, а затем кодировать их в JSON.
Вы также можете создать отчет об ошибках для Harvest и попросить их реализовать Serializable
и / или JsonSerializable
.
Других решений пока нет …