我使用ObjectMapper將我係統中的帖子序列化爲json。這些帖子包含來自世界各地的條目,幷包含utf-8字符。問題是ObjectMapper似乎沒有正確處理這些字符。例如,字符串「Muséed'Orsay」被序列化爲「Mus?©e d'Orsay」。ObjectMapper不正確處理UTF-8?
這裏是我的代碼,在做的系列化:
public void configureMessageConverters(List<HttpMessageConverter<?>> 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);
}
:
public static String toJson(List<Post> 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());
}
有趣的是,當我使用@ResponseBody使用以下配置通過請求處理程序返回,它完全一樣的List<Post> posts
被序列化就好了
任何幫助非常感謝!
它是直接返回String的控制器方法嗎? http://stackoverflow.com/questions/3616359/who-sets-response-content-type-in-spring-mvc-responsebody – 2012-08-11 08:02:44
我認爲你應該更新這個問題,因爲問題不在ObjectMapper。 – philipp 2014-05-06 19:29:18