問題タブ [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.

0 投票する
1 に答える
964 参照

php - JMS シリアライザーを使用した 2 次元配列のシリアライズ

テーブル、行、セルを表すデータ構造があります。JSON と XML にシリアル化および逆シリアル化する必要があります。この種のオブジェクトをシリアライズするように JMS シリアライザーを構成するにはどうすればよいですか?

この XML に:

注釈付きの行を表すオブジェクトを使用しようとしました@Inlineが、JSON での逆シリアル化では機能しません。行は空です。

0 投票する
1 に答える
5792 参照

symfony - シリアル化するエンティティに動的プロパティを追加する

この REST API があります。ID(/resource/{id})でリソースを取得するリクエストが来るたびにpermissions、そのオブジェクトにその場で配列を追加したいと思います(エンティティ自体にはそのフィールドがありません)。

私が思いついたのは、このイベントリスナーです。コントローラーが返した結果をチェックします。

問題は、JMS シリアライザーがシリアライゼーションでこの動的プロパティをオプトアウトすることです。onPostSerializeJMSシリアライザーでイベントサブスクライバーを作成しようとしましたが、これがGET ONEまたはGET COLLECTIONリクエストであるかどうかを確認する明確な方法がありません。この動作は必要ありませんGET COLLECTION。また、コレクションのシリアル化でパフォーマンスが大幅に低下します。permissionまた、プロパティを持つ基本エンティティ クラスを作成したくありません。

たぶん、このシナリオに対処する他の方法がありますか?

0 投票する
2 に答える
2629 参照

php - JMS シリアライザーによる XML デシリアライゼーション

この非常に単純な XML を逆シリアル化しようとしています。

何を試しても、配列は常に空になるため、引数要素をまたは任意の種類のコレクションarrayに逆シリアル化することはできません。ArrayCollection

どちらも空の配列になります。そこで、引数用に別のオブジェクトを作成してみました

したがって、元のプロパティは次のようになります

そしてクラス

配列はまだ空です。しかし、タイプを に変更する@Type("App\Blueprint\Model\Argument")と、正しいオブジェクトが得られますが、最初のものだけです。

逆シリアル化ハンドラーを登録しようとすると、それが次のようSimpleXmlElementになり、It is not yet possible to assign complex types to properties警告が表示されるため、変更できません...

編集

今のところ、私は愚かな方法でそれを解決することができました:

誰かがより良い解決策を持っている場合は、ここに残しておいてください。

0 投票する
1 に答える
1372 参照

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 の方法」を知りたいです。

誰かが知識を流すことができれば、それは素晴らしいことです。ありがとう!

0 投票する
0 に答える
116 参照

jmsserializerbundle - JMSSerialerBundle デシリアライズ関係

関連するエンティティがあり、そのすべての関係でエンティティをシリアル化したいのですが、シリアル化は正常に機能します (私は思います)。たとえば、この json を保存します。

後者でデシリアライズしようとすると、取得するのは

関連を示すプロパティはマッピングされません。逆シリアル化後に適切にマップされたオブジェクトを取得するために必要なこと。

私のエンティティコード:

編集 いくつかのテストの後、これらのリレーションIDは仮想メソッドのためにのみ設定され、それらがないとイベントがシリアル化されないことがわかったので、変更された質問は、リレーションを持つエンティティを適切にシリアル化および逆シリアル化する方法です.

0 投票する
2 に答える
1453 参照

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 を構成することを考えていましたが、コンテナーやサービスにアクセスできません。

どうすればこれを適切に処理できますか?

0 投票する
1 に答える
24 参照

php - サブスクライバが JMS/シリアライザ ライブラリを使用して特定のオブジェクトに作用しないというエッジ ケースを処理するにはどうすればよいですか?

JMS/Serialzier ライブラリを使用しています。

リッスンする Event-Subscriber をセットアップし、プロパティを持つEvents::PRE_SERIALIZEクラスのすべてのオブジェクト インスタンスを異なる通貨に変換します。Pricecurrencyamount

しかし今、私のアプリケーションでは、1 つのコンテナー オブジェクトに属する 1 つの価格EdgeCaseをまったく変換する必要がないというエッジ ケースがあります。

ただし、元の状態を維持する必要があります。それでも、オブジェクトがどこから来たのかを区別できないようです。

Priceどのオブジェクトをいつ変換するかを設定できるようにしたいと考えています。