SpringMVC对于已经是json字符串的输出
SpringMVC对于已经是json字符串的输出
火化十 发表于2年前
SpringMVC对于已经是json字符串的输出
  • 发表于 2年前
  • 阅读 15
  • 收藏 0
  • 点赞 1
  • 评论 0

华为云·免费上云实践>>>   

摘要: 用SpringMVC返回直接是json字符串的值的处理

SpringMVC常规情况下返回json需要把数据放入某一个对象中,然后转换成JSON格式

 有时候会有取到的值,本身已经是一个序列化后的JSON字符串了,意思已经是一个String了! 如果还是什么都按即有的办法做,Spring输出时会把这个纯字符串,当作JSON的Value来处理,会在返回的值外面加上引号如:

"{\"name\":\"dayun\", \"type\":\"C234\"}"


这时候前端JS就不认识这是个对象了,认为就是一个普通的字符串,你需要手动的转换下

var str="{\"name\":\"dayun\", \"type\":\"C234\"}"
var obj=JSON.parse(str);
obj.name

既然结果已经是现成的了,为什么还要再去转下,况且还是不对的!前端还更麻烦!


解决办法!

思路是直接将值写进response里!但要绕过SpringMVC自动对request的检查,也就跳过了在配置中 “

messageConverters” 的作用,不会去自动转一遍JSON了

@RequestMapping(value="/jefly",method=RequestMethod.GET)
public void beforeeee(@RequestBody(required=false)HttpServletRequest request,HttpServletResponse response) throws Exception{
	response.setContentType("application/json; charset=UTF-8");
	response.getWriter().print("{\"name\":\"dayun\", \"type\":\"C234\"}");
}
  1. 方法不需要返回值,因为是直接写进response

  2. 参数request前加上 @RequestBody(required=false) 表示不执行默认的mvc会写进去的设定


这样返回的结果就OK了,JS可以直接拿到的是一个对象

标签: JAVA SpringMVC JSON
共有 人打赏支持
粉丝 0
博文 1
码字总数 369
×
火化十
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: