2012-03-08 29 views
1

オブジェクトを含む配列を含むオブジェクト 'Resonse'をJSON文字列に変換したいと思います。データ構造のJSON文字列を持つPHP配列

例:

$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文字列に変換する方法を知っていますか? Btw、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

レスポンスオブジェクトを連想配列に変換し、その配列をjson_encode()に渡すことができます。このような何か:XML変換のために

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

json_encode($responseArray); 

は、私がDOMDocumentオブジェクトまたはXML文字列に上記のコードによって生成さ$response配列を変換することができ、簡単なクラスを書きました。あなたはここにそれを見つけることができます:code.google.com/p/array-to-domdocument/

0

あなたのクラス定義がここで問題になる可能性があります。プライベート変数が定義されている場合、単純なjson_encodeは使用可能な出力にはなりません。オブジェクト内に関数を作成して、jsonでエンコードされた文字列を返すことができます。

関連する問題