- 网上查找了很久,那些方法对自己都不管用。不管怎么设置,查看响应头,发现响应类型一直都是“text/html;charset=utf-8”,死活就是变不了“application/json;charset=utf-8”。
- 后来,我舍弃了字符输出流Writer,
改用字节输出流OutputStream,问题成功解决。服务器端代码如下:
ObjectMapper mapper=new ObjectMapper();
//String string = mapper.writeValueAsString(introByName);
// System.out.println(string);
response.setContentType("application/json;charset=utf-8");
mapper.writeValue(response.getOutputStream(),introByName);
//response.getWriter().write(string);
//request.getRequestDispatcher("index.jsp").forward(request,response);
- 前端代码如下,代码挺少的:
<script>
$(function ()//入口函数
{
$("#intro_a").click(function ()//给a标签设置单击事件
{
$.post("${pageContext.request.contextPath}/FindWaterQualityStationServlet",{"name":"安徽宿州杨庄"},function (data)//发起异步请求
{
alert(data.stationName);
});
});
});
</script>
4.再后来我又发现,其实也是可以使用字符输出流的,出错原因应该是“请求转发”:
request.getRequestDispatcher("index.jsp").forward(request,response);
去掉请求转发的这一行代码,就行了。所以,请求转发代码就是问题产生的原因。
- json解析器我这里用的是jackson。常见的json解析器有Jsonlib、Gson、fastjson、jackson这4种。点我下载jackson所需jar包
- 将java对象转换成 json的步骤如下:
①:导入jar包
②:创建ObjectMapper对象
③:调用ObjectMapper相关方法进行转换
说一下两种方法:
第一种:writeValue(参数1,obj)
其中参数1有如下取值:
File:将obj对象转换为JSON字符串,并保存到指定的文件中; Writer:将obj对象转换为JSON字符串,并将json数据填充到字符输出流中;
OutputStream:将obj对象转换为JSON字符串,并将json数据填充到字节输出流中;
第二种: writeValueAsString(obj):将对象转为json字符串。
来源:CSDN
作者:YSoup
链接:https://blog.csdn.net/Deep_rooted/article/details/103464542