問題タブ [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 - JSM Serializer を使用して JSON の「プリミティブ」にシリアライズする
おそらく私は間違った方法で取り組んでいますが、オブジェクト (プリミティブを表す) を JSON の「プリミティブ」にシリアル化できるようにしたいと考えています。JsonSerializable Interface と json_encode の助けを借りて簡単ですが、JSM Serializer の助けを借りてこれを一般化できるようにしたいと思います。
私はインライン注釈をいじりましたが、オブジェクトをシリアル化するときに、オブジェクトを表す文字列が必須であるように見えますか? これは正しいです?可能であれば、どうすればこれを行うことができますか?
たとえば、配列/コレクションを表すより複雑なオブジェクトもあります
symfony - JMSSerializerBundle Json の整数値ではありません
私はJMSSerializerBundleをAPIのjsonのデシリアライザーに使用しているので、値が正しいかどうかを確認したいので、Symfonyアノテーションの検証を使用していますが、整数値の場合、jsonには文字列値JMSSerializerBundleがどのようにデフォルト値を0に設定します.
が整数でない場合に、このフィールドまたは別の整数フィールドに関するエラーを返す方法です。
次のようなエラーが発生したい
symfony - Symfony2 のアノテーションで定義されたシリアライザ グループをオーバーライドまたは拡張する
Symphony 2 プロジェクトで JMS シリアライザーを使用しており、アノテーションで定義されたシリアライザー グループを使用しています。
ある特定のケースでは、実行時パラメータに応じてグループを変更または少なくとも 1 つ追加したいと考えています (つまり、ユーザー認証のチェック)。
また、アノテーションを使用して、シリアライザーと直接対話しないようにしています。メソッドは単にオブジェクトを返します。
これは可能ですか?ドキュメントには、注釈をオーバーライドできると信じさせるものは何も見つかりませんでした。
serialization - JMS シリアライザ: 関連付けられたエンティティの除外ポリシーは無視されました
Symfony2 の JMS シリアライザーを使用して、 2 つのクラスを取得しました。
これはクラス Person です:
FOSUser:
次に、次のように呼び出します。
$serializedResponse = $serializer->serialize(
$persons, 'json', SerializationContext::create()->enableMaxDepthChecks()
);
私が期待しているのは、シリアル化されたすべての人であり、その fosuser フィールドでは、FOSUser の ID のみが公開されています。
それにもかかわらず、$groups
FOSUser オブジェクト内のすべてのフィールド (例: ) を公開しており、ExclusionPolicy と矛盾しています。
注: FOSUser の ADDED フィールド (例: BaseUser には存在しない "$fullname")は、注釈 @Serializer\Exclude および/または @Serializer\ExclusionPolicy("all") によって非表示になります
注 2 : @Serializer\Exclude タグを FOSUser (例: $groups) の OVERRIDING フィールドに追加すると、非表示になりません。
php - JMS シリアライザーはオブジェクトを配列にシリアライズできません
配列のコンテナーとしてのみ使用されるクラスがあります。
JMS\Serializer を使用して、このクラスに含まれる配列のみをシリアル化することをお勧めします。そのために、特別なハンドラー関数を使用します。
今私が走れば
私の期待は、私が得ることです
しかし、私が得るのはnull
.
ここで問題を報告しましたが、この問題の回避策を知っている人はいますか? 望ましい結果を得るには、この問題にどのように取り組む必要があります@HandlerCallback
か (または他のアイデアを使用せずに)。
ありがとう!
symfony - SonataUserBundle のシリアライザー構成をオーバーライドしてプロパティを非表示にすることはできません
SonataUserBundleとJMSSerializerBundleを使用していますが、シリアル化されたオブジェクトのトークンとその他のプロパティを非表示にしたいと考えています。
SonataUserBundle でovvrideしたいファイルはResources/config/serializer/Model.User.xmlです。
これが私の構成です:
app/config.yml
jms_serializer:
metadata:
auto_detection: true
directories:
- { path: %kernel.root_dir%/Resources/SoantaUserBundle/serializer, namespace_prefix: 'Sonata\UserBundle' }
- { path: %kernel.root_dir%/Resources/FOSUserBundle/serializer, namespace_prefix: 'FOS\UserBundle' }
app/Resources/SonataUserBundle/serializerで2 つのファイルを試しました。
モデル.ユーザー.xml
<?xml version="1.0" encoding="UTF-8"?>
<serializer>
<class name="Sonata\UserBundle\Model\User" exclusion-policy="all" xml-root-name="user">
<property name="token" type="string" expose="false" since-version="1.0" groups="sonata_api_read,sonata_api_write,sonata_search" />
</class>
</serializer>
モデル.ユーザー.yml
Sonata\UserBundle\Model\User:
exclusion_policy: ALL
properties:
token:
expose: false
両方のファイルが機能していないようです。
FOSUserBundleからいくつかのプロパティを隠すことができましたが、SonataUserBundleに関連するものを隠すのに問題があるようです。関連性があるかどうかはわかりませんが、 HWIOauthBundleも使用していることに言及したいと思います。
どんな助けでも大歓迎です。
symfony - symfony、JMS シリアライゼーション バンドル、深い oneToMany リレーションの戦略を定義
私は symfony 2 で JSM シリアライゼーション バンドルを使用していますが、これは問題ありません。表示変数ポリシーを定義したい User エンティティを使用することです。戦略はすべてのプロジェクトで何らかの形で同じですが、ユーザー エンティティは多くの異なる要求を通じて検索されます。いくつかの公開戦略を定義します。私はそれを含むすべてのエンティティに対してそれを行う必要があると思います。伝播はすべての親エンティティをスローしました。
たとえば、community->owner と community->session->user を含むコミュニティ エンティティがある場合、セッションとコミュニティに追加せずに、ユーザー レベルでのみ戦略を実行できるようにしたいと考えています。今、シリアライゼーションで何も表示されない場合...
何か提案はありますか?