問題タブ [jmsserializerbundle]
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 - Symfony2 CRUD、GET は JSON を返しますが、POST は EMPTY レコードを作成し、PUT は何もしません
私は Symfony2 と多くのバンドルを初めて使用しますが、プロトタイプ REST API に取り組んでおり、FOSRestBundle を使用し、Symfony2 によって生成されたネイティブ CRUD も試しています。ただし、Symfony2 CRUD コードは正しい JSON 形式の応答を返しますが、POST はエラーを返し、問題の解決方法に関する説明とチュートリアルを探しています。エンティティの GET と POST の両方のコードを見てください。この場合はアドレスとしましょう。
AJAX を使用して API にリクエストを送信しているとします。ここに、GET と POST の両方のコードをそれぞれ示します。
GET は正しいものを返しますが、POST は次のエラーを返します: {"code":500,"message":"Warning: json_encode(): recursion detected in /var/www/projects/symfony/vendor/jms/serializer/src/ JMS/Serializer/JsonSerializationVisitor.php 行 29"}。エラーを解決するにはどうすればよいですか? 単一のエンティティまたはすべてのエンティティを返すことができますが、パスにデータを送信してエンティティを作成するだけの POST でエラーが発生します。JMSSerializer バンドルを 0.12.* から dev-master に更新し、AJAX によって送信されるデータに NULL 値が含まれていないことを確認しましたが、エラーは残ります。POST コントローラーに POST で送信された有効な JSON からデータを作成させるにはどうすればよいですか?
PUT も試してみましたが、結果は同じで、リソースは更新されません。テーブル内のレコードを更新するだけではいけませんか? このバグの原因を突き止めるためにさらに情報を提供する必要がある場合はお知らせください。コードは上記で編集されています。
php - XML 配列のデシリアライズ
XML を返す API を使用しています。API を使用して 1 つまたは複数のアカウントを取得できます。Jms シリアライザーを使用して、このデータをデータを保持する単純なモデル クラスに逆シリアル化しています。
アカウントは次のようになります
次のようにオブジェクトを構成することができました。これはAccount
、逆シリアル化時に正常に機能します。
複数のアカウントを取得すると、次のようになります。
これを一連のアカウントに逆シリアル化したいと思います。ただし、現時点では、トリックを実行する唯一の方法は、Accounts
次のような 2 番目のモデルを作成することです。
逆シリアル化するときは、正しいコンテキストを渡す必要があります。
SOの質問またはJMSシリアライザーGithubのどこかで、「タイプ」をコンテキストとして渡すこともできることを見つけました$serializer->deserialize($rawXml, 'array<Recurly\Model\Account>', 'xml')
が、これは単に空の配列になります...追加なしで配列を逆シリアル化できるかどうかは誰でも知っていますデータ・モデル?
php - Symfony2 JMSSerializer はインライン テキストを置き換えます
シリアル化されたフィールドの出力を変更して、 symfony2のいくつかのパターン(ユーザー メッセージなど)を置き換える、単純で愚かな解決策を探しています。
残念ながら、カスタム De-/Serialization Handlerを使用すると、すべてのポリシーが破棄されます。シリアル化されたすべてのデータを手動で返す必要があります。
モデルクラス:
ハンドラー クラス:
json - フィールド コンテンツの HTML タグを含む JMSSerializer を使用してエンティティをシリアル化すると、Json が無効になる
JMSSerializerbundle
Doctrine Entities の JSON 応答を取得するために symfony2をインストールしました。
問題は、ckeditor と contentHTML
タグによって作成された文字列フィールドがあると、無効な JSON 応答が返されることです。
http://jsonlint.com/を使用すると、このエラーが発生しました
154 行目の解析エラー:...
"course_content": "pmlllo</p>",
-----------------------^ 'STRING' が必要です, 'NUMBER'、'NULL'、'TRUE'、'FALSE'、'{'、'['
jmsserializerbundle - JMSSerializer を使用して入力フィールドと出力フィールドをフォーマットする (単一のプロパティを処理する)
JMSSerializer を使用してシリアライズとデシリアライズで単一のオブジェクト プロパティを処理したいと考えています。このクラスがあるとします:
(FOSRestBundle を使用して) REST API をスローした Task のインスタンスを返したいと思います。$status
問題は、属性の生の値ではなく、「ラベル」の値を返したくないことです。
次のようにシリアライゼーションを設定します。
JMS シリアライザーは 0 または 1 の raw 値を考慮しますが、シリアル化されたオブジェクトで「保留中」または「オーバー」を送信したい (を使用getStatusLabel
)。そして、逆シリアル化で逆の仕事をします(を使用getStatusFromLabel
)。
私はaについて考えましたvirtual_properties
が、それは連載方向でのみ機能します。
私はこのようなカスタムハンドラーで試しました:
しかし、それは明らかにうまくいきません!
シリアル化と逆シリアル化の両方の方向でカスタム ゲッターを呼び出すにはどうすればよいですか?