文档章节

SpringMVC对于已经是json字符串的输出

火化十
 火化十
发布于 2016/04/19 14:33
字数 369
阅读 28
收藏 0

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可以直接拿到的是一个对象

© 著作权归作者所有

共有 人打赏支持
火化十
粉丝 0
博文 1
码字总数 369
作品 0
徐汇
程序员
私信 提问
【转】Ajax响应中文乱码 [SpringMVC使用@ResponseBody处理Ajax请求]

Spring3.0 MVC @ResponseBody 的作用是把返回值直接写到HTTP response body里。 Spring使用AnnotationMethodHandlerAdapter的handleResponseBody方法, AnnotationMethodHandlerAdapter使用r......

一堆BUG
2013/09/10
0
0
疯狂Spring Cloud连载(11)——Feign的编码器与解码器

本文节选自《疯狂Spring Cloud微服务架构实战》 京东购买地址:https://item.jd.com/12256011.html 当当网购买地址:http://product.dangdang.com/25201393.html Spring Cloud教学视频:htt...

杨大仙的程序空间
2017/10/23
0
4
Springmvc中@ResponseBody和@RequestBody的使用

springmvc中通过使用jackson配置来处理springmvc对json的支持,通过@ResponseBody来将后台对象转成json对象传给调用者,通过@RequestBody来将调用者传过来的json字符串转换为后台使用的对象具...

CsOH913
2016/01/17
115
0
spring mvc 对已经是json字符串的数据如何?

虽然用spring mvc 输出json很方便,但发现有个情况是,总是需要一个实体对象来做为数据的载体才行。如果我已经有一个现成的json字符串了,比如在数据中已经存好了一个转换好的json结果,那应...

火化十
2016/04/18
925
14
SpringMVC: HttpMessageConverter消息转换器机制

1、概述 在SpringMVC中,可以使用@RequestBody和@ResponseBody两个注解,分别完成请求报文到对象和对象到响应报文的转 换,底层这种灵活的消息转换机制,就是Spring3.x中新引入的HttpMessage...

_Roger_
2015/11/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

vue 对对象的属性进行修改时,不能渲染页面 vue.$set()

我在vue里的方法里给一个对象添加某个属性时,我console.log出来的是已经更改的object ,但是页面始终没有变化 原因如下: **受现代 JavaScript 的限制 (而且 Object.observe 也已经被废弃),...

Js_Mei
今天
2
0
开始看《Java学习笔记》

虽然书买了很久,但一直没看。这其中也写过一些Java程序,但都是基于IDE的帮助和对C#的理解来写的,感觉不踏实。 林信良的书写得蛮好的,能够帮助打好基础,看得出作者是比较用心的。 第1章概...

max佩恩
昨天
12
0
Redux 三大原则

1.单一数据源 在传统的MVC架构中,我们可以根据需要创建无数个Model,而Model之间可以互相监听、触发事件甚至循环或嵌套触发事件,这些在Redux中都是不被允许的。 因为在Redux的思想里,一个...

wenxingjun
昨天
8
0
跟我学Spring Cloud(Finchley版)-12-微服务容错三板斧

至此,我们已实现服务发现、负载均衡,同时,使用Feign也实现了良好的远程调用——我们的代码是可读、可维护的。理论上,我们现在已经能构建一个不错的分布式应用了,但微服务之间是通过网络...

周立_ITMuch
昨天
5
0
XML

学习目标  能够说出XML的作用  能够编写XML文档声明  能够编写符合语法的XML  能够通过DTD约束编写XML文档  能够通过Schema约束编写XML文档  能够通过Dom4j解析XML文档 第1章 xm...

stars永恒
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部