gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 03:15:40 28 4
gpt4 key购买 nike

现在,我试图将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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com