問題タブ [jmsserializerbundle]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - JMSSerializationBundle は、グループに基づく属性でシリアライズできません
Product クラスで指定したグループに基づいてシリアル化しようとしています。完全な製品クラスはここで見ることができます。ドキュメントの例に従って使用しているコードは次のとおりです。
したがって$param
、上記は基本的に Product オブジェクトの配列です。
ただし、何らかの理由で、これでも不要な製品属性がすべて出力されます (つまり、「マーケットプレイス」ではない他のグループに属する属性)。たとえば、属性「説明」。説明を「詳細」グループに含めるようにマークしましたが、「マーケットプレイス」グループを要求したときに応答の一部として返されるのはなぜですか?
symfony - JMS シリアライザー 抽象親クラスでデシリアライズする
逆シリアル化したいさまざまなプロパティを持ついくつかの子を持つ抽象親(マップされたスーパー)クラスがあります。私は MongoDB と Doctrine ODM を使用してデータを保存しているので、doctrine にどのサブクラスが使用されているかを伝える識別子フィールドもあります (また、他の場所でどのクラスが現在処理されているかを判断するために使用されるカスタムの「タイプ」プロパティもあります)。
モデルをデシリアライズすると、抽象クラスのインスタンスを作成することは不可能であるという例外が発生します (もちろん) - JMS デシリアライザーにどの継承クラスを使用する必要があるかを伝える方法を考えています (それが私が使用する理由です)。type
たとえば、カスタムインスタンス変数 - doctrine の識別子フィールド マッピングにアクセスできないため)。
私はうまくフックすることができpreDeserializeEvent
ます - それで、そこにいくつかのスイッチ/ケースを作ることができるかもしれません(またはを使用して)?
要するに私のモデル(抽象クラス):
サブクラスの 1 つ
もう 1 つのテストは、Module クラスを抽象化せず、カスタムの静的メソッドを作成することでした。
何か案は?
json - エンティティで JMSSerializerBundle を使用してオブジェクト プロパティをシリアル化する
jmsserializerbundle を使用してオブジェクトをシリアル化すると、正しい JSON オブジェクトが取得されますが、1 つのプロパティが空 (オブジェクト型) であり、このプロパティの定義は次のようになります。
ただし、このエンティティにオブジェクトがある場合でも、シリアライザーは次のように出力します。
{
"id": 10,
"search_query_params": {},
"created": "2013-07-02T10:31:02+0200"
},
単なる空のオブジェクトです。with は true ではありません。これは、DB の searchQueryParams の値です。
O:8:"stdClass":2:{s:4:"name";s:8:"Greacja2";s:10:"price_from";s:4:"2000";}
symfony - 依存オブジェクトを使用して Symfony2 のエンティティをシリアル化する方法
Product エンティティと ProductList エンティティがあります。
json にその ProductList に関連する Product オブジェクトが含まれるように、ProductList オブジェクトを json にシリアル化 (および逆シリアル化) することは可能ですか?
予想される出力は次のとおりです。
Symfony2 組み込みシリアライザーと JMS\Serializer を使用していますが、うまくいきません。
これを行う方法はありますか?
symfony - JMS シリアライザは、継承を使用してドクトリン エンティティをデシリアライズします
継承を使用する Doctrine Entity があります。
また、コンテンツ エンティティのコレクションを含むアイテム エンティティもあります。JMSSerializer を使用してこれらのエンティティを XML にシリアル化すると、discr 列が表示されます。
XML を逆シリアル化したい場合、コンテンツ クラスを除いて、期待どおりの結果が得られます。それらはすべて \Namespace\To\Entity\Content オブジェクトです。この方法では、変更をデータベースに保存できません。
上記のコード例では、@Discriminatorアノテーションを使用してエンティティ タイプを指定しようとしましたが、うまくいきません。どうすればこれを機能させることができますか?私は近いと思いますが、アイデアがありません。
編集
親クラスに次の変更を加えた場合:
に
そして、適切に機能するテキスト要素のみを追加しますが、他の要素を追加すると(もちろん)壊れます。
symfony - FOSRestBundle のシリアライザーは、継承されたエンティティを使用して再帰エラーをスローします
抽象クラスを継承するアプリケーションを開発しています。これらの抽象クラスには、次の例に示すように、シリアライザー用の独自のマッピングがあります。
そして抽象クラス:
前のクラスを継承するクラスは次のようになります
スローされたエラーは次のように述べています。
確かに、エンティティが公開されておらず、マッピングによると「登録済み」エンティティの 3 つのフィールドだけが公開されているため、私は何か間違ったことをしていますが、手がかりはありません。私は成功せずに間違いが何であるかを理解しようとして数日を費やしました。
継承されたプロパティのマッピングを行う適切な方法は何ですか?
アップデート
FOSRestBundle を使用して JSON をシリアル化するために使用されるコード:
symfony - FOSRestBundle および JMSSerializer ランタイムの公開
私の Symfony2 API は、FOSRestBundle と JMSSerializer をプロパティ アノテーションと共に使用していますが、すべてのプロパティを公開したくない場合がよくあります。JMS に除外グループがあることは理解していますが、それらを Symfony コントローラーに含める方法がわかりません。動的ベースで PHP を使用する方法があるはずですが、それもドキュメントから欠落しているようです。