2012-10-03 11 views
15

Ich versuche, Text aus PDF zu extrahieren und in eine JSON-Datei schreiben. Beim Extrahieren von Unicode-Zeichen konvertiert der Json alle & in \ u0026. Zum Beispiel ist mein tatsächlicher String &#1588. (was ش darstellt). Es wird korrekt in eine TXT-Datei gedruckt, um zu trösten usw. Aber wenn ich versuche, diese Zeichenfolge in eine JSON-Datei zu drucken, wird \u0026#1588; angezeigt.Json wandelt & in einem String in u0026

Ich bin mit Java, und der Code ist

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

Hinweis: pdfDoc ist ein Objekt, das alle Details enthält (Position, Farbe, Schriftart .. etc) von Zeichen innerhalb des Eingangs-PDF-Dokument. Ich benutze gson-2.2.1.jar.

Antwort

30

Das ist eigentlich eine gültige (aber nicht erforderlich) Codierung. Alle Zeichen können mit dem Unicode-Escape in JSON codiert werden und jede gültige JSON-Parsing-Bibliothek muss in der Lage sein, diese Escapezeichen zu interpretieren.

& ist nicht Teil der Zeichen, die Codierung benötigen (siehe die Definition von stringat json.org), aber es gibt ein paar JSON-Bibliotheken, die ganz „aggressive“ in ihrer Codierung sind. Das ist normalerweise kein Problem, es sei denn, Sie behandeln den resultierenden JSON nicht mit einem entsprechenden JSON-Parser.

GsonBuilder.disableHtmlEscaping() wird Ihnen helfen, diese Funktion auszuschalten, wenn Sie unbedingt brauchen.

+1

Danke. Es funktionierte. Ich habe den Code in Gson geändert gson = new GsonBuilder(). DisableHtmlEscaping(). Create(); – Neeraj