[解決済み] シリアライザがダブルクォートをエスケープして \u0022 にならないようにするにはどうしたらいいですか?
質問
コントローラで
JsonResponse
:
public function index(CkeditorTemplateRepository $ckeditorTemplateRepository, SerializerInterface $serializer): Response
{
$data = $ckeditorTemplateRepository->findAll();
return new JsonResponse($serializer->serialize($data, 'json'));
}
しかし、このエンドポイントをリクエストすると、レスポンスにあまりにも多くの
\u
の接頭辞があります。
"[{\u0022created\u0022:\u00222019-08-31T07:28:56+00:00\u0022,\u0022id\u0022:1,\u0022content\u0022: \u0022\u003Ctr\u003E\u003Ctd height=\\u002252\\u0022 valign=\\u0022bottom\\u0022 class=\\u0022h24\\u0022\u003E\u003Cspan class=\\u0022h21copy1\\u0022\u003E\u5b66\u4e60\u56de\u526f\u603b\u7406\u7684\u8bb2\u8bdd \u003C\/span\u003E\u003C\/td\u003E\u003C\/tr\u003E\u003Ctr\u003E\u003Ctd valign=\\u0022top\\u0022\u003E\u003Cp style=\\u0022margin- の下にあります。 10\\u0022 align=\\u0022center\\u0022 class=\\u0022font6\\u0022\u003E\u003C\/p\u003E\u003C\/td\u003E\u003C\/tr\u003E\u0022}]"
解決方法は?
問題は、あなたのやり方が間違っていることです。
JsonResponse
はレスポンスオブジェクトで、レスポンスデータのJSONへのシリアライズを支援します。
でも、セラリゼーションはすでに自分でやっているので、ちょっと冗長ですね。
いくつかのオプションがあります。
return (new Response($serializer->serialize($data, 'json'))
->headers->set('Content-type', 'application/json');
あるいは
JsonResponse
:
return (new JsonResponse())->setContent($serializer->serialize($data, 'json'));
またはインスタンス化
JsonResponse
から直接
ファクトリーメソッド
:
return JsonResponse::fromJsonString($serializer->serialize($data, 'json'));
(いずれの場合も、JsonResponseがそれを行うので、コンテンツタイプを設定する必要はありません)。
そうすると
new JsonResponse($data);
というレスポンスが返されます。
content
は、JSONをシリアライズした
$data
. これは
単純なデータ構造
を呼び出せば、簡単にシリアライズできます。
json_encode
. しかし、あなたはすでにJSON文字列を送信していたので、この方法でデータを2回シリアライズすることになります。
関連
-
[解決済み】pdo - 非オブジェクトのメンバー関数prepare()への呼び出し【重複】。
-
[解決済み] SQLSTATE[HY093]: 無効なパラメータ番号: パラメータが定義されていません
-
[解決済み] [Solved] Fatal error: 非オブジェクトのメンバ関数fetch_assoc()の呼び出し [重複]。
-
[解決済み] Forbidden :このサーバーの /phpmyadmin にアクセスする権限がありません。
-
[解決済み] PHPでSQLインジェクションを防ぐにはどうしたらいいですか?
-
[解決済み] ある文字列が特定の単語を含んでいるかどうかを確認するにはどうすればよいですか?
-
[解決済み] YouTube APIからYouTubeビデオのサムネイルを取得する方法を教えてください。
-
[解決済み] PHPでHTML/XMLをパースして処理する方法とは?
-
[解決済み] PHPのエラーを表示させるにはどうしたらいいですか?
-
[解決済み] PHPの文字列で、シングルクオートとダブルクオートの違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Weird PHP error: 'Can't use function return value in write context'.
-
[解決済み】SQLSTATE[42000]: 構文エラーまたはアクセス違反が発生しました。1064 SQL 構文にエラーがあります - PHP - PDO [重複]。
-
[解決済み] $wpdb->update または $wpdb->insert を実行すると、引用符の前にスラッシュが追加される
-
[解決済み】PHPからPythonスクリプトを実行する
-
[解決済み] SQLSTATE[HY093]: 無効なパラメータ番号: パラメータが定義されていません
-
[解決済み】メッセージ。Trying to access array offset on value of type null [重複]配列のオフセットにアクセスしようとしています。
-
[解決済み] [Solved] Fatal error: 非オブジェクトのメンバ関数fetch_assoc()の呼び出し [重複]。
-
[解決済み】SSLピア証明書またはSSHリモートキーがOKでなかった
-
[解決済み】phpのシンタックスエラー、予期しないT_IFエラーを修正する方法は?[クローズド]。
-
[解決済み] libapache2-mod-php7 パッケージの場所がわからない