問題タブ [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 に答える
1278 参照

json - JMSSerializerBundle のマッピング キーが 0 に等しくない

私は JMSSerializerBundle を使用していますが、シリアライゼーションの奇妙な動作に気付きました。

私は $jsonItems = $serializer->serialize($invoiceItems, 'json'); を使用しています。$invoiceitems は次のとおりです。

そして、次の JSON を取得します。

私の JSON 文字列で、 services[1] が services[3] とは異なるフォーマットになっているのはなぜですか? 私の PHP 配列を参照すると、唯一の違いは、services[1] の最初のキーが 0 であるのに対し、services[3] の最初のキーが 1 であるということです。0 に等しい場合、JMS シリアライザーがキーをマッピングしていないようです。最後に、JSON 文字列でキーを 0 に等しくしたいと思います。

どうやってやるの ?

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

php - JMSシリアライザーを使用して配列をオブジェクトのルートにシリアライズすることは可能ですか?

以下のような構造の単純なオブジェクトがあるとします。

このオブジェクトを JMS シリアライザーで JSON にシリアライズすると、次のように $data がルート要素にあり、同じ構造を持つ結果が得られます。

$data 変数の内容をシリアル化された結果のルートに配置する必要があります。つまり、次のようになります。

これは可能ですか?もしそうなら、どのように?

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

symfony - JMSSerializer のみ FOSUser クラスのプロパティを公開

FOSUser モデルから拡張されたカスタム ユーザー クラスがあります。

私の問題は次のとおりです。FOSUser モデルの抽象プロパティは公開されていますが、カスタム拡張クラスのプロパティは公開されていません。

プロパティを公開するために、2 つの yaml ファイルを作成しました。1) MyBundle/../Resources/config/serializer/fos/Model.User.yml 2) SecurityBundle/../Resource/config/serializer/Entity.User.yml

私のカスタム User クラスにはプロパティ $name があります。私の .yaml ファイルによって公開されるべきもの:

Doctrine$idでは、拡張クラスに a を追加する必要があります。は、カスタム User クラス$idを追加したときにのみ公開されます。* @ExclusionPolicy("all")@Expose を名前に追加すると、違いはありません。

これを達成する方法は?

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

php - JSMシリアライザを手動で初期化する方法はありますか?

API 用の PHP ラッパー プロジェクトを作成しています。応答オブジェクト内で、JSON ブロックをオブジェクトに逆シリアル化するのが好きです。これは symfony 標準フレームワーク プロジェクトではなく、symfony コンポーネントを含む PHP プロジェクトです。

symfony プロジェクト内では、単純に呼び出します

そしてそれで終わります。しかし、もちろん、私のクラスは ContainerAware ではなく、コンテナやサービス全般へのアクセスもありません。JMS シリアライザーを API として使用する必要があります。JMS シリアライザー (構成付き) も使用するためのラッパーを作成しています。

JMS シリアライザー ( JMS\Serializer\Serializer) を手動で初期化する方法はありますか?

JMS シリアライザーの services.xml 内には、次の定義があります。

オブジェクトを次々と初期化することはできましたが、サービス コンテナ ( <argument type="service" id="service_container" />) が必要な時点でスタックしてしまいます。

JMSシリアライザーを手動で初期化する方法はまだありますか?

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

symfony - jms での配列のシリアル化の方法を変更する

私が配列をシリアライズしているとき、私は次のようなものを持っています:

しかし、JSON を使用した配列の非シリアル化に問題があります。次のようになるはずです。

それを変更する方法はありますか?

これがsymfony2の私のコードです

編集:「getArrayResult()」が配列を返すことがわかりましたが、関係エンティティが含まれていません

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

php - JMSSerializer による特性のシリアライズ

特性を使用するモデルをシリアライズしようとすると、JMSSerializer はその特性に含まれるプロパティをシリアライズしません。yaml を使用してシリアライザーを構成していますが、機能していないようです。

JMSSerializerBundle が使用され、次の yaml が配置されます。Resources/config/serializer/Model.Traits.IdentityTrait.yml

そして、OurClass構成は次の場所にありますResources/config/serializer/Model.OurClass.yml

問題に集中するために一部のコードは無視されています

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

php - JMS シリアライザー XmlList アノテーション

@XmlList 要素の cdata と名前空間を定義する方法は?

たとえば、http://jmsyst.com/libs/serializer/master/reference/annotations#xmlnamespace の例から BlogPost を変更して、複数の作成者を含める必要がある場合:

次のようなシリアル化された xml を使用します。

単一の@XmlElementの場合、cdata と名前空間の両方が正常に機能しますが、@XmlList@XmlCollectionはこのようなものではありません。

リスト内の要素の注釈をどこに置くべきか手がかりはありますか?