1. ホーム
  2. java

[解決済み] Json は String の & を \ に変換します。

2022-02-17 16:37:17

質問

pdfからテキストを抽出し、jsonファイルに書き込もうとしています。ユニコード文字を抽出する際に、Jsonが全ての&を "unicode "に変換してしまいます。例えば、私の実際の文字列は &#1588 . (これはشを表す)。これは、.txtファイルやコンソールなどに正しくプリントされます。しかし、この文字列をJsonファイルに出力しようとすると、次のように表示されます。 \u0026#1588; .

私はJavaを使用しており、そのコードは

Gson gson = new Gson();
String json = gson.toJson(pdfDoc);

pdfDoc はオブジェクトで、入力 PDF ドキュメント内の文字のすべての詳細 (位置、色、フォントなど) を含んでいます。 私は gson-2.2.1.jar .

解決方法は?

これは実は有効な(必須ではない)エンコーディングなんです。 任意の 文字 かもしれない JSON と有効な JSON パース・ライブラリで unicode エスケープを使用してエンコードされます。 必須 は、これらのエスケープを解釈することができます。

& が持つ文字には含まれません。 必要 の定義参照)。 string json.orgにて しかし、いくつかのJSONライブラリは、そのエンコーディングにおいて、かなり"aggressive"なものがあります。しかし、JSONライブラリの中には、エンコードにかなり積極的なものもあります。これは、JSONパーサーで結果のJSONを本当に処理しないのでなければ、通常は問題にはなりません。

GsonBuilder.disableHtmlEscaping() を使用すると、どうしても必要な場合にこの機能をオフにすることができます。