ホームページ >バックエンド開発 >PHPチュートリアル >findallを使用してsymfonyで読み取ったデータをjsonに変換する方法

findallを使用してsymfonyで読み取ったデータをjsonに変換する方法

WBOY
WBOYオリジナル
2016-06-20 12:43:041141ブラウズ

$repository = $this->getDoctrine()->getRepository('AppBundle:User');$all = $repository->findAll();


array (size=2)  0 =>     object(AppBundle\Entity\User)[248]      private 'id' => int 1      private 'name' => string 'A Foo Bar' (length=9)      private 'pass' => string '19.99' (length=5)  1 =>     object(AppBundle\Entity\User)[251]      private 'id' => int 2      private 'name' => string 'Two Fot Bar' (length=11)      private 'pass' => string '40.00' (length=5)


返されたデータは次のようになります。これを JSON データに変換する方法を説明します。
今回は return new JsonResponse($all); を使用します。 [ {}]


ディスカッションへの返信 (解決策)


[{"id":1,"name":"a","pass":"p"},{"id":2 など) AppBundleEntityUser の JsonSerializable インターフェイス

class T implements JsonSerializable {  private $id;  private $name;  private $pass;  function __construct($id, $name, $pass) {    $this->id = $id;    $this->name = $name;    $this->pass = $pass;  }  function jsonSerialize() {    return array(      'id' => $this->id,      'name' => $this->name,      'pass' => $this->pass,      );  }}$d[] = new T(1, 'a', 'p');$d[] = new T(2, 'b', 'p');echo json_encode($d);
を実装する必要があります,"name" :"b","pass":"p"}]
それ以外の場合は [{},{}] のみです
返される属性はプライベートであるため

AppBundleEntityUser に、
[{"id":1,"name":"a","pass":"p"},{"id":2, "name":"b" ,"pass":"p"}]

class T implements JsonSerializable {  private $id;  private $name;  private $pass;  function __construct($id, $name, $pass) {    $this->id = $id;    $this->name = $name;    $this->pass = $pass;  }  function jsonSerialize() {    return array(      'id' => $this->id,      'name' => $this->name,      'pass' => $this->pass,      );  }}$d[] = new T(1, 'a', 'p');$d[] = new T(2, 'b', 'p');echo json_encode($d);
それ以外の場合は [{},{}] のみです
返された属性はプライベートであるため


属性はプライベートなので、ありがとうございます。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。