問題タブ [jms-serializer]
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 - schmittjoh/serializer で仮想プロパティをシリアル化できません
シリアライズしているクラスの 1 つに、確認したい仮想プロパティがあります。私はyaml構成を使用しています。
yaml は次のとおりです。
クラスは次のとおりです。
モデルをシリアル化すると、配列を値として持つ json の画像フィールドが表示されることが期待されます。代わりに、フィールドがありません。yaml ファイルでさまざまな設定の組み合わせを試しましたが、表示できません。
symfony - JMSSerializer で Pre_deserialize コールバックが機能しない
jmsserializer を介して pre_deserialization で Document の __constructor を実行しようとしていますが、それが機能しない理由がわかりません。
次のような yaml ファイルからシリアライザのメタデータをロードしています。
実行を逆シリアル化しようとすると:
コンストラクター関数に到達できませんが、イベントを他の使用可能なもの (pre_serialize、post_serialize、および post_deserialize) に変更すると、到達できます。
この特定のイベントの処理に関するコードが欠落していると思いますが、他のイベントに影響を与える同じコードをコピーしようとしても機能しません。イベントディスパッチャーなどに登録されていないようです。
私の環境は次のとおりです。
ありがとう。
php - アノテーションを無視するように JMS シリアライザーを構成する方法はありますか?
Joomla で JMS シリアライザーを使用しています! プロジェクトですが、ライブラリで正しく機能しない注釈がいくつかあるようです。これらの注釈は Joomla の内部にあるため、削除できません! ユーザーがコードを更新すると、それらの注釈が再び表示されます。
すべての注釈を無視するようにシリアライザーを構成する方法はありますか?
どんな助けでも大歓迎です。
symfony - なぜ jms シリアライザはより深いレベルでエンティティを表示しないのですか?
私は多くのエンティティCompany
を持ち、多くのUsers
をUser
持っていTokens
ます。User を内部に持つ Token をシリアライズしたいと思います。
これを行うと、シリアル化された結果は次のようになります{"token":{"id":2,"user":{},"token":"sxcdftrbgyijmko"}}
。MaxDepth を 1 に変更すると、出力に会社が表示されなくなります。{"token":{"id":2,"user":{"id":2,"tokens":[],"name":"Martin"},"token":"sxcdftrbgyijmko"}}
. MaxDepth を 2 に変更すると、会社もシリアル化されます。会社が深さ 1 にないのはなぜですか? グループでこの動作を実現しようとしましたが、同じ結果になりました。
私はサイドローディング ビジターを使用しています。ビジターが ID に変換できるように、これらの空のフィールドを保持することが重要です。また、最小限の機能例をgithubに作成しました。
php - Symfony と JMSSerialier、リスナーを追加してフィールドを追加できない
私はこの答えに従おうとしました: JMSシリアライザーバンドルを使用して追加のフィールドを追加します
でも変わらない..
送信する前に、シリアル化されたエンティティ (json) に追加のフィールドを追加したいと考えています。見逃したものはありますか?
これが私のリスナーです:
そして私のコントローラーでの呼び出し:
次のサービス宣言も追加します。
私は別のサービスを宣言しており、リスナーサービスでそれを行うときではなく、その宣言名を変更するとsymfonyが与えてエラーになります。
前もって感謝します
php - JMSSerializer の deserialize メソッドの型キャストを防ぐことはできますか?
逆シリアル化後にエンティティを検証しているため、型キャストを防ぐ必要があります
たとえば、次の json を逆シリアル化すると、並べ替え順 5 のエンティティが作成されます。API にこの検証を使用していますが、間違ったエラー メッセージは表示されません。
型キャストを防ぐ方法はありますか?
symfony - ID のみを表示するシリアル化されたエンティティ
JMSSerializer と FOSRestBundle を使用しています。いくつかの再帰を含む、かなり典型的なオブジェクト グラフがあります。
私が達成したいのは、特定の深さを超えて含まれるオブジェクト、または一般的には ID のみでリストされますが、直接シリアル化された場合はすべてのデータでリストされることです。
例: ユーザー => グループ => ユーザー
/user/1 をリクエストすると、結果は次のようになります
/group/10 をリクエストすると、次のようになります。
@MaxDeph を使用すると、含まれている配列を完全に非表示にできるため、 { "id": 1, "name": "John Doe", "groups": [] } を取得します
しかし、REST クライアントが必要に応じて ID をフェッチしたり、キャッシュを参照したり、何でもできるように、ID だけを含めたいと思います。
グループを使用して手動でこれをまとめることができることはわかっていますが、一貫性の理由から、アプリケーション全体でこの動作を有効にできるかどうか疑問に思っていました。おそらく maxdepth への参照を使用して、ID を含める場所と完全なものを含める場所を制御できます。オブジェクト?