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 Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
War die Antwort sehr einfach. Sie müssen angeben, UTF-8 charset encoding in der Antwort.setContentType zu.
Dann viele der oben genannten code ordnungsgemäß ausgeführt wird. Ich lasse meine Frage ist, da wird es zeigen Ihnen verschiedene Möglichkeiten, wie das schreiben von JSON-Kunden.
Auf RequestMapping in Controller: