arrays - 使用Jackson以UTF-8编码将Java列表转换为JSON数组

标签 arrays json list utf-8 jackson

现在,我试图将Java List对象转换为JSON数组,并努力转换UTF-8字符串。我已经尝试了所有以下方法,但都无济于事。

设定。

response.setContentType("application/json");

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

测试#1。
// Using writeValueAsString
String json = ow.writeValueAsString(list2);

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

测试#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");

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

测试#5。
// Using writeValueAsString
String json = mapper.writeValueAsString(list2);

测试#6。
// Using writeValue
mapper.writeValue(out, list2);

就像我说的那样,以上方法均无效。全部显示类似“???”的字符。感谢您的帮助。我正在使用Servlet将JSON响应发送到客户端。

仅当我编写java.util.List对象时,才会发生此问题。如果我写单个数据对象,例如下例中的customer对象,则没有???字符,并且UTF-8正在使用以下代码。
PrintWriter out = response.getWriter();
ObjectWriter ow = new ObjectMapper().writer().withDefaultPrettyPrinter();
String json = ow.writeValueAsString(customer);
out.print(json);

最佳答案

答案很简单。您还需要在response.setContentType中指定UTF-8字符集编码。

response.setContentType("application/json;charset=UTF-8");

然后,上面的许多代码将正常工作。我将保留我的问题,因为它将向您展示几种向客户端编写JSON的方法。

关于arrays - 使用Jackson以UTF-8编码将Java列表转换为JSON数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23590475/

相关文章:

javascript - 旋转 JavaScript 数组

java - 打印数组元素而不重复元素

c++ - De-allcoating 动态分配的多维数组。

json - ModelSerializer 空字符串的字段验证

javascript - JSON - 无法读取未定义的属性

python - 使用首字母大写对文件中的字典元素进行排序

python - 将列表中的键值对字符串转换为数据框 Python 中的列

c# - List<long> 在 C# 中以逗号分隔的字符串

java - 对话框不会停止,我的代码有什么问题?

php - DataTables 警告 : JSON data from server could not be parsed. 这是由 JSON 格式错误引起的