Ich verwende ObjectMapper, um Beiträge in meinem System in json zu serialisieren. Diese Beiträge enthalten Einträge aus der ganzen Welt und enthalten utf-8-Zeichen. Das Problem ist, dass der ObjectMapper diese Zeichen anscheinend nicht richtig verarbeitet. Zum Beispiel wird der String "Musée d'Orsay" als "Mus?©e d'Orsay" serialisiert.
Hier ist mein Code, der die Serialisierung durchführt:
public static String toJson(List posts) {
ObjectMapper objectMapper = new ObjectMapper()
.configure(Feature.USE_ANNOTATIONS, true);
ByteArrayOutputStream out = new ByteArrayOutputStream();
try {
objectMapper.writeValue(out, posts);
} catch (JsonGenerationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (JsonMappingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return new String(out.toByteArray());
}
Interessanterweise wird die genau gleiche List posts
ordnungsgemäß serialisiert, wenn ich sie über einen Anforderungs-Handler mit @ResponseBody zurückgebe und die folgende Konfiguration verwende:
public void configureMessageConverters(List> converters) {
ObjectMapper m = new ObjectMapper()
.enable(Feature.USE_ANNOTATIONS)
.disable(Feature.FAIL_ON_UNKNOWN_PROPERTIES);
MappingJacksonHttpMessageConverter c = new MappingJacksonHttpMessageConverter();
c.setObjectMapper(m);
converters.add(c);
super.configureMessageConverters(converters);
}
Jede Hilfe ist sehr willkommen!