問題タブ [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.
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 に等しくしたいと思います。
どうやってやるの ?
php - JMSシリアライザーを使用して配列をオブジェクトのルートにシリアライズすることは可能ですか?
以下のような構造の単純なオブジェクトがあるとします。
このオブジェクトを JMS シリアライザーで JSON にシリアライズすると、次のように $data がルート要素にあり、同じ構造を持つ結果が得られます。
$data 変数の内容をシリアル化された結果のルートに配置する必要があります。つまり、次のようになります。
これは可能ですか?もしそうなら、どのように?
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 を名前に追加すると、違いはありません。
これを達成する方法は?
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シリアライザーを手動で初期化する方法はまだありますか?
symfony - jms での配列のシリアル化の方法を変更する
私が配列をシリアライズしているとき、私は次のようなものを持っています:
しかし、JSON を使用した配列の非シリアル化に問題があります。次のようになるはずです。
それを変更する方法はありますか?
これがsymfony2の私のコードです
編集:「getArrayResult()」が配列を返すことがわかりましたが、関係エンティティが含まれていません
php - JMSSerializer による特性のシリアライズ
特性を使用するモデルをシリアライズしようとすると、JMSSerializer はその特性に含まれるプロパティをシリアライズしません。yaml を使用してシリアライザーを構成していますが、機能していないようです。
JMSSerializerBundle が使用され、次の yaml が配置されます。Resources/config/serializer/Model.Traits.IdentityTrait.yml
そして、OurClass
構成は次の場所にありますResources/config/serializer/Model.OurClass.yml
問題に集中するために一部のコードは無視されています
php - JMS シリアライザー XmlList アノテーション
@XmlList 要素の cdata と名前空間を定義する方法は?
たとえば、http://jmsyst.com/libs/serializer/master/reference/annotations#xmlnamespace の例から BlogPost を変更して、複数の作成者を含める必要がある場合:
次のようなシリアル化された xml を使用します。
単一の@XmlElementの場合、cdata と名前空間の両方が正常に機能しますが、@XmlListと@XmlCollectionはこのようなものではありません。
リスト内の要素の注釈をどこに置くべきか手がかりはありますか?