2012-03-08 7 views
1

Я хотел бы преобразовать объект 'Resonse', содержащий массив с объектами в строку JSON.PHP массив с объектами в строку 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.

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

+0

Просмотрите эту дискуссию (http://stackoverflow.com/questions/7005860/php-json-encode-class-private-members) для получения более подробной информации и настроек. – davidethell

+0

Каково текущее возвращаемое значение 'json_encode ($ response)'? – knittl

ответ

0

Проверить http://php.net/manual/en/function.serialize.php

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

0

Вы можете преобразовать объект 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

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

Смежные вопросы