問題タブ [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.
symfony - 依存オブジェクトを使用して Symfony2 のエンティティをシリアル化する方法
Product エンティティと ProductList エンティティがあります。
json にその ProductList に関連する Product オブジェクトが含まれるように、ProductList オブジェクトを json にシリアル化 (および逆シリアル化) することは可能ですか?
予想される出力は次のとおりです。
Symfony2 組み込みシリアライザーと JMS\Serializer を使用していますが、うまくいきません。
これを行う方法はありますか?
symfony - 特定のフィールドを含めるかどうかを実行時に決定できるようにする JMS シリアライザーのカスタム除外戦略を作成するにはどうすればよいですか?
タイトルが示すように、シリアル化にフィールドを含めるかどうかを実行時に決定しようとしています。私の場合、この決定は権限に基づいて行われます。
私は Symfony 2 を使用しているので、セキュリティ表現を受け入れる @ExcludeIf という追加の注釈を追加しようとしています。
アノテーションの解析とメタ データの保存は処理できますが、カスタムの除外戦略をライブラリに統合する方法がわかりません。
助言がありますか?
注: 除外戦略は、JMS コードベースの実際の構成要素です。私は、エクストラを他のものの上に統合する最善の方法を見つけ出すことができませんでした。
PS: 以前にこれについて質問したことがあり、グループの使用を指摘されました。さまざまな理由から、これは私のニーズに対して非常に貧弱なソリューションです。
php - JMS シリアライザー。「1対多」の関係を持つモデルのシリアル化の2つの方法を作成します
PHP プロジェクトにJMS シリアライザーを使用していますが、1 つの問題に遭遇しました。
コードを見てください
ここでは、コードの簡単な例を示しました。注文の変更履歴を保存するために使用します。更新の前後に、このシリアル化されたモデルをデータベースに保存します。Ok。
そして今、クライアント側で作業するためのすべてのプロパティを使用して、製品のモデルをシリアル化したいと考えています。だから私が持っていた最初のアイデアは、グループを使用することです。$id および $name プロパティに "Group({'history', 'edit'})" を設定し、その他すべての "Group({'edit'})" に設定する必要があります。製品のシリアル化には問題ありませんが、最初のソリューションが破損しています。今、私の「注文履歴」には、$price や $description などの不要な情報が保存されています。
シリアル化グループが暗黙的に指定されていない場合に使用される製品のモデルのデフォルト グループを指定する正しい方法はありますか (注文の履歴の例のように)? または、グループを Order のモデルに移動せずに、この 2 種類のシリアライゼーションを利用できるようにする別の方法があります (実際には、この場合、リファクタリングする必要があるモデルが複数あるため)。
rest - RESTful コントローラーでフォーム タイプの選択肢を提供する
restul symfony2 アプリケーションの次の単純なフォーム タイプを想像してください。
FOSRestBundleを使用して RESTful コントローラーを作成すると、このフォーム タイプを取得するための実装は次のようなものを返します{"children":{"description":[]}}
(JSON がデフォルトであると仮定します)。
選択肢をシリアル化することは可能でしょうか?またその方法は? それとも、ここで何か誤解していますか?この例では 3 つのハードコーディングされた選択肢しかありませんが、たとえば 20/30/40/… を持つエンティティはどうでしょうか? 要求元のクライアントにその情報を提供する方法が必要です。
rest - シリアル化されたオブジェクトにカスタム プロパティを追加する
Web サービス用の RESTful API を開発しています。また、エンティティ自体に属さないいくつかのプロパティを公開する必要があります。
たとえば、Pizza
エンティティ オブジェクトがあり、それには独自のsize
プロパティがありname
ます。FOSRestBundleとJMSSerializerでJSON形式で出力しています。このエンティティのプロパティ注釈を設定して、シリアル化グループを介して必要なプロパティを公開しましたが、うまく機能しています。
しかし、エンティティ自体に属さないプロパティをいくつか追加する必要があります。たとえば、pizza
プロパティが必要です。isFresh
これは、何らかのPizzaService::isFresh(Pizza $pizza)
サービスによって決定されます。どうすればいいですか?
- シリアル化プロセスに追加のロジックを挿入する必要がありますか (そうであれば、どのように)?
- 元のエンティティから公開したいプロパティと追加の外部プロパティを含むラッパー エンティティを作成する必要がありますか?
isFresh
シリアライゼーションの前に、元のPizza
エンティティにプロパティを追加してコントローラーに入力する必要がありますか?- エンティティ データとは独立した追加データを返す必要がありますか (たとえば、兄弟の JSON プロパティで)。
つまり、この問題に関するベスト プラクティスは何ですか? 例を挙げていただけますか?ありがとうございました。
php - xml:lang 属性を読み取る JMS シリアライザー
これは、PHP の xml:lang 解析に関連しています。
JMSシリアライザーを使用して、Sirena-Travel (航空券プロバイダー) への XML 要求を作成し、そこからの XML 応答を解析します。注釈付き DTO のシステム全体がこのシリアライザーを中心に構築されており、これを変更する可能性はほとんどありません。
逆シリアル化したい応答 XML があります (上記の質問と同じです)。
問題は、属性に対応するプロパティを指定するにはどうすればよいxml:lang
ですか?
これは、最も内側の要素を記述するクラスがどのように見えるかです:
xml:lang
明らかに、シリアライザーは属性を$lang
プロパティとして認識しません。私はいくつかのアプローチを試しました:
- プロパティに追加
@SerializedName("xml:lang")
し$lang
ます。 名前空間の注釈を追加します。
プロパティの
/li>@XmlAttribute
注釈を次のように変更しながら、親ノードまたはルート ノードのいずれかに$lang
言うまでもなく、どちらかまたは両方で成功することはありません。
次のような代替ソリューションも考えています。
- XML を前処理して、
xml:lang
属性をに変換しますlang
。 DescribeLangElement
クラスを処理するカスタム逆シリアル化ハンドラーを記述します。
しかし、それらは私にはやり過ぎのように思えます。
xml:lang
JMS シリアライザ アノテーションを使用して属性のプロパティを指定する簡単な方法はありますか?
php - 結果セットに既にオブジェクトがある場合、教義エンティティを配列に変換する方法は?
iterate を使用してエンティティをフェッチし、その値を更新しています。私は膨大なデータセットを持っているので、doctrine を使用して挿入するには時間がかかります。
doctrineエンティティをcsvファイルに書き込み、mysqlの「LOAD DATA INFILE」を使用して巨大なデータセット全体をロードしたいと考えています。
doctrineオブジェクトをcsv値としてファイルに書き込むか、少なくともcsvに書き込むことができる配列に変換する方法はありますか?
JMSSerialiser を試しましたが、配列に出力されません。