web-dev-qa-db-ja.com

JSONは文字列内の&を\ u0026に変換します

PDFからテキストを抽出してjsonファイルに書き込もうとしています。 Unicode文字を抽出する際、Jsonはすべての&を\ u0026に変換します。たとえば、実際の文字列は&#1588です。 (これはrepresentsを表します)。 .txtファイルやコンソールなどに正しく出力されます。しかし、この文字列をJsonファイルに出力しようとすると、\u0026#1588;が表示されます。

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

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

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

18
Neeraj

これは実際には有効な(ただし必須ではない)エンコーディングです。 任意の文字可能性がありますは、JSONのUnicodeエスケープと有効なJSON解析ライブラリは、これらのエスケープを解釈できる必要があります

&needエンコードする文字の一部ではありません(stringの定義を参照してください json.orgで =)、ただし、エンコーディングが非常に「積極的」なJSONライブラリがいくつかあります。結果のJSONを準拠するJSONパーサーで実際に処理しない限り、これは通常問題ではありません。

GsonBuilder.disableHtmlEscaping() は、どうしても必要な場合にその機能をオフにするのに役立ちます。

34
Joachim Sauer