問題タブ [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 - JMS シリアライザーを使用した 2 次元配列のシリアライズ
テーブル、行、セルを表すデータ構造があります。JSON と XML にシリアル化および逆シリアル化する必要があります。この種のオブジェクトをシリアライズするように JMS シリアライザーを構成するにはどうすればよいですか?
この XML に:
注釈付きの行を表すオブジェクトを使用しようとしました@Inline
が、JSON での逆シリアル化では機能しません。行は空です。
symfony - シリアル化するエンティティに動的プロパティを追加する
この REST API があります。ID(/resource/{id})でリソースを取得するリクエストが来るたびにpermissions
、そのオブジェクトにその場で配列を追加したいと思います(エンティティ自体にはそのフィールドがありません)。
私が思いついたのは、このイベントリスナーです。コントローラーが返した結果をチェックします。
問題は、JMS シリアライザーがシリアライゼーションでこの動的プロパティをオプトアウトすることです。onPostSerialize
JMSシリアライザーでイベントサブスクライバーを作成しようとしましたが、これがGET ONE
またはGET COLLECTION
リクエストであるかどうかを確認する明確な方法がありません。この動作は必要ありませんGET COLLECTION
。また、コレクションのシリアル化でパフォーマンスが大幅に低下します。permission
また、プロパティを持つ基本エンティティ クラスを作成したくありません。
たぶん、このシナリオに対処する他の方法がありますか?
php - JMS シリアライザーによる XML デシリアライゼーション
この非常に単純な XML を逆シリアル化しようとしています。
何を試しても、配列は常に空になるため、引数要素をまたは任意の種類のコレクションarray
に逆シリアル化することはできません。ArrayCollection
どちらも空の配列になります。そこで、引数用に別のオブジェクトを作成してみました
したがって、元のプロパティは次のようになります
そしてクラス
配列はまだ空です。しかし、タイプを に変更する@Type("App\Blueprint\Model\Argument")
と、正しいオブジェクトが得られますが、最初のものだけです。
逆シリアル化ハンドラーを登録しようとすると、それが次のようSimpleXmlElement
になり、It is not yet possible to assign complex types to properties
警告が表示されるため、変更できません...
編集
今のところ、私は愚かな方法でそれを解決することができました:
誰かがより良い解決策を持っている場合は、ここに残しておいてください。
php - Symfony3 で JMS シリアライザーを初期化する方法は?
私はSymfony3用の JMSSerializerBundle を使用しようとしています (これは出てきたばかりです)。
これらは、私がロードした名前空間ですTestController.php
use JMS\Serializer\Serializer;
use JMS\Serializer\SerializerBuilder;
use JMS\Serializer\SerializationContext;
whereは単なる単純なオブジェクトですが、次のエラーが発生します$data = $this->get('jms_serializer')->serialize($data, 'json');
。$data
Attempted to call an undefined method named "get" of class "AppBundle\Controller\TestController"
サイトの使用例も試してみました$serializer = $container->get('jms_serializer');
が、Notice: Undefined variable: container
私はまだ Symfony3 とそのバンドルに不慣れで、symfony 3 の JMS シリアライザーに関するドキュメントを見つけることができないようです
このように初期化し$serializer = SerializerBuilder::create()->build();
てメソッドを呼び出すことができますがserialize
、それを行う正しい「symfony の方法」を知りたいです。
誰かが知識を流すことができれば、それは素晴らしいことです。ありがとう!
jmsserializerbundle - JMSSerialerBundle デシリアライズ関係
関連するエンティティがあり、そのすべての関係でエンティティをシリアル化したいのですが、シリアル化は正常に機能します (私は思います)。たとえば、この json を保存します。
後者でデシリアライズしようとすると、取得するのは
関連を示すプロパティはマッピングされません。逆シリアル化後に適切にマップされたオブジェクトを取得するために必要なこと。
私のエンティティコード:
編集 いくつかのテストの後、これらのリレーションIDは仮想メソッドのためにのみ設定され、それらがないとイベントがシリアル化されないことがわかったので、変更された質問は、リレーションを持つエンティティを適切にシリアル化および逆シリアル化する方法です.
symfony - エンティティの Sysmfony REST API ハッシュ ID
Symfony 2.7.9 と FOSRestBundle および JMSSerializerBundle を使用してマルチテナンシー バックエンドを構築しています。
APIを介してオブジェクトを返すとき、返されたオブジェクトのすべてのIDをハッシュしたいので、返す代わりに、フロントエンドでハッシュされたIDを操作できる{ id: 5 }
ようにする必要が{ id: 6uPQF1bVzPA }
あります(おそらくhttp://hashidsを使用して.org )
ID のハッシュを計算するカスタム getter メソッドを使用してエンティティに仮想プロパティ (「_id」など) を設定するように JMSSerializer を構成することを考えていましたが、コンテナーやサービスにアクセスできません。
どうすればこれを適切に処理できますか?
php - サブスクライバが JMS/シリアライザ ライブラリを使用して特定のオブジェクトに作用しないというエッジ ケースを処理するにはどうすればよいですか?
JMS/Serialzier ライブラリを使用しています。
リッスンする Event-Subscriber をセットアップし、プロパティを持つEvents::PRE_SERIALIZE
クラスのすべてのオブジェクト インスタンスを異なる通貨に変換します。Price
currency
amount
しかし今、私のアプリケーションでは、1 つのコンテナー オブジェクトに属する 1 つの価格EdgeCase
をまったく変換する必要がないというエッジ ケースがあります。
ただし、元の状態を維持する必要があります。それでも、オブジェクトがどこから来たのかを区別できないようです。
Price
どのオブジェクトをいつ変換するかを設定できるようにしたいと考えています。