PHP массив с объектами в строку json - PullRequest
2 голосов
/ 08 марта 2012

Я хотел бы преобразовать объект 'Resonse', содержащий массив с объектами, в строку JSON.

Пример структуры данных:

$response = new model_ObjectReponse();
$error1 = new model_Message('error', 'test error 1');
$error2 = new model_Message('error', 'test error 2');
$error3 = new model_Message('error', 'test error 3');
$response->add($error1);
$response->add($error2);
$response->add($error3);
$output = json_encode($response);
print $output;

Объекты сообщения имеютзакрытый тип свойств и сообщение с геттерами и сеттерами.

Так кто-нибудь знает, как преобразовать это в строку json?Кстати, у меня есть тот же вопрос для преобразования его в XML.

Спасибо за помощь.

Ответы [ 3 ]

0 голосов
/ 08 марта 2012

Вы можете преобразовать ваш объект Response в ассоциативный массив и передать этот массив в json_encode().Примерно так:

foreach ($response->getMessages() as $message)
  $responseArray['messages'][] = array(
    'type' => $message->getType(),
    'message' => $message->getMessage()
  );

json_encode($responseArray);

Для преобразования XML я написал простой класс, который может преобразовывать массив $response, созданный с помощью приведенного выше кода, в объект DOMDocument или строку XML.Вы можете найти его здесь: code.google.com / p / array-to-domdocument /

0 голосов
/ 09 марта 2012

Ваше определение класса может быть проблемой здесь. Если у вас определены закрытые переменные, простой json_encode не будет полезен для вывода. Вы можете создавать функции внутри вашего объекта, чтобы возвращать строку в кодировке json.

0 голосов
/ 08 марта 2012

Чек http://php.net/manual/en/function.serialize.php

Этот метод позволит вам сохранить объект в виде строки. Вы также можете отменить сериализацию объекта, в любом случае хранение объектов в виде строки не является хорошей практикой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...