Java-Liste, um JSON-array mit dem Jackson mit UTF-8-Codierung

Jetzt versuche ich, zu konvertieren Java-List-Objekt in JSON-array, und kämpfen, um Sie zu konvertieren UTF-8 strings. Ich habe versucht, alle followings, aber keiner von Ihnen arbeitet.

Einstellungen.

response.setContentType("application/json");

PrintWriter out = response.getWriter();
ObjectWriter ow = new ObjectMapper().writer().withDefaultPrettyPrinter();
final ObjectMapper mapper = new ObjectMapper();

Test#1.

//Using writeValueAsString
String json = ow.writeValueAsString(list2);

Test#2.

//Using Bytes
final byte[] data = mapper.writeValueAsBytes(list2);
String json = new String(data, "UTF-8");

Test#3.

//Using ByteArrayOutputStream with new String()
final OutputStream os = new ByteArrayOutputStream();
mapper.writeValue(os, list2);
final byte[] data = ((ByteArrayOutputStream) os).toByteArray();
String json = new String(data, "UTF-8");

Test#4.

//Using ByteArrayOutputStream
final OutputStream os = new ByteArrayOutputStream();
mapper.writeValue(os, list2);
String json = ((ByteArrayOutputStream) os).toString("UTF-8");

Test#5.

//Using writeValueAsString
String json = mapper.writeValueAsString(list2);

Test#6.

//Using writeValue
mapper.writeValue(out, list2);

Wie gesagt, keiner der oben genannten arbeiten. Alle displays, die Zeichen wie "???". Ich Schätze Ihre Hilfe. Ich bin mit Servlet zu senden, JSON-Antwort an clients.

Dieses problem passiert nur wenn ich das schreiben von java.util.List-Objekt. Wenn ich Schreibe, die einzelne Daten-Objekt, z.B. Kunden-Objekt im folgenden Beispiel, dann gibt es keine ??? Zeichen und UTF-8 arbeitet mit dem folgenden code.

PrintWriter out = response.getWriter();
ObjectWriter ow = new ObjectMapper().writer().withDefaultPrettyPrinter();
String json = ow.writeValueAsString(customer);
out.print(json);
  • Was ist list2? Was ist ow? Was ist out?
  • Test #1 funktioniert mit reinen Java-strings. Es ist keine Codierung beteiligt. Wenn Test #1 nicht funktioniert, dann die ??? Zeichen sind bereits Teil list2 oder Sie erst zu einem späteren Zeitpunkt nicht in Frage. Bitte mehr Kontext. An welcher Stelle siehst du das ??? Zeichen?
  • Ich vergaß hinzuzufügen, diese. Ich habe aktualisiert mein original-post. Vielen Dank, dass mich wissen!
  • In Bezug auf Zeichen innerhalb liste2 Objekt, die ich getestet habe und die Charaktere sind in Ordnung (nicht ???), was bedeutet Zeichen gebrochen werden, während die JSON-write-Prozess. Wenn ich Schreibe, nur ein einzelnes Objekt, dann gibt es kein problem. Dies geschieht nur, wenn ich versuche zu schreiben java.util.Liste mit Jackson.
InformationsquelleAutor Mingoo | 2014-05-11
Schreibe einen Kommentar