4

データベースにクエリを実行し、生成された結果をhtmlクライアントに送り返すphpアプリケーションを開発しています。

現在、php 関数 json_encode を使用して JSON でエンコードしているオブジェクトの配列を取得しています。

しかし、エンコード後、結果に null 配列が表示されます。

次の構造は、JSON にエンコードする前です。

 array(2) {
  [0]=>   
      object(ProductComment)#6 (2) {
    ["_productId":"ProductComment":private]=>
    string(1) "1"
    ["_commentArray":"ProductComment":private]=>
    array(2) {
      [0]=>
      array(3) {
        ["comment"]=>
        string(9) "comment 1"
        ["creationDate"]=>
        string(19) "2000-02-02 00:00:00"
        ["userName"]=>
        string(8) "Ashutosh"
      }
      [1]=>
      array(3) {
        ["comment"]=>
        string(13) "comment1 text"
        ["creationDate"]=>
        string(19) "2012-07-31 10:20:27"
        ["userName"]=>
        string(8) "Ashutosh"
      }
    }
  }
  [1]=>
  object(ProductComment)#5 (2) {
    ["_productId":"ProductComment":private]=>
    string(1) "2"
    ["_commentArray":"ProductComment":private]=>
    array(2) {
      [0]=>
      array(3) {
        ["comment"]=>
        string(22) "comment2 product2 text"
        ["creationDate"]=>
        string(19) "2012-07-31 10:48:06"
        ["userName"]=>
        string(8) "Ashutosh"
      }
      [1]=>
      array(3) {
        ["comment"]=>
        string(22) "comment2 product4 text"
        ["creationDate"]=>
        string(19) "2012-07-31 10:48:14"
        ["userName"]=>
        string(8) "Ashutosh"
      }
    }
  }
}

エンコード後、JSON ではなく null が表示されます。シリアル化する必要がありますか?どんなアドバイスでも結構です。ありがとうございます。

4

1 に答える 1

13

「ProductComment」のすべてのプロパティがプライベートであるように見えるため、JSON エンコーディングに関しては、次のようになります。

[{}, {}]

これは基本的に配列で、2 つの空のオブジェクトが含まれています。

必要なことは、シリアル化 (または json エンコーディング) 時にどのプロパティを保持できるか、または保持する必要があるかを PHP に伝えることです。そのために、__sleep()マジック メソッドをクラスに追加します: ( http://uk.php.net/__sleep )

于 2012-07-31T12:43:41.703 に答える