2017-11-22 8 views
1

PHP配列オブジェクトをJSONに変換しようとしています。次はPHP配列オブジェクトです。シリアライズするPHP配列オブジェクト

Array 
(
    [0] => Project\Man\Model\Branch Object 
     (
      [id:protected] => 123456 
      [name:protected] => Parent Branch 
      [type:protected] => services 
     ) 

) 

私はそれをシリアライズしようとしましたが、読みやすいオブジェクトではありませんでした。

私は次のことを試してみました:

json_encode

シリアル化

a:1:{i:0;O:23:"Project\Man\Model\Branch ":3:{s:5:"*id";s:36:"123456";s:7:"*name";s:20:"Parent Branch";s:7:"*type";s:8:"services";}}[{}] 

私はJSONを取得することができ、いくつかのソリューションをしようとしています。助けてください。

+0

jsonだけが必要な場合は、 'serialize()'ではなく 'json_encode()'だけを使用してください。 –

+0

しかしそれは私に空の結果を与えます。[{}] @MagnusEriksson – TomPHP

答えて

2

jsonだけが必要な場合は、serialize()ではなくjson_encode()を使用する必要があります。

オブジェクトのプロパティがprotectedに設定されているため、オブジェクトをエンコードしていくつかの追加のヘルプを表示すると利用できなくなります。

これは、インターフェイスJsonSerializableが出場するところです。

エンコードするオブジェクトがインターフェイスを実装していることを確認する必要があります。次に、jsonSerialize()メソッドをクラスに追加する必要があります。

class Branch implements \JsonSerializable 
{ 
    protected $id; 
    protected $name; 
    protected $type; 

    // ... your class code 

    public function jsonSerialize() 
    { 
     // Return what you want to be encoded 
     return [ 
      'id' => $this->id, 
      'name' => $this->name, 
      'type' => $this->type, 
     ]; 
    } 
} 

あなたは今json_encode()を通じて、このオブジェクトを渡すと、あなたは私たちの新しいメソッドが返すものにJSON文字列を取得します場合。

関連する問題