1
daya 2016-11-18 12:22:20 +08:00 via Android
不是做 java 的,但是我看楼主的阐述,感觉这是防 XSS 的功能。
|
2
haohaozaici 2016-11-18 12:22:58 +08:00
读学校网站的 json 数据返回的也是这样,我在 android 端开发,就直接把所有 \ 去掉,再去掉首尾的 “” 。就跟正常 json 数据一样了。
|
3
jason19659 2016-11-18 12:28:53 +08:00
value 用 map 就没这问题了
|
4
jason19659 2016-11-18 12:29:41 +08:00
或者把 value 转成 json object 塞进去
|
5
fantastM 2016-11-18 13:19:45 +08:00
返回类型是 String 还是 Map
|
6
reeco 2016-11-18 13:23:02 +08:00
value 上加注解 @JsonRawValue
|
7
cs4814751 2016-11-18 13:43:36 +08:00
view 用什么模板引擎渲染的?
|
8
ecpay 2016-11-18 13:49:29 +08:00
就喜欢你们这些不转义的
|
9
chocotan 2016-11-18 13:59:24 +08:00
jstl 跟 spring 标签上都有这个属性的
|
11
ZiLong 2016-11-18 15:41:50 +08:00
感觉是你的 value 是 String 类型,设成 String 类型会有这个问题
|
12
teemoer 2016-11-18 16:48:10 +08:00
<mvc:annotation-driven content-negotiation-manager="contentNegotiationManager">
<mvc:message-converters register-defaults="true"> <!-- 将 StringHttpMessageConverter 的默认编码设为 UTF-8 --> <bean class="org.springframework.http.converter.StringHttpMessageConverter"> <constructor-arg value="UTF-8" /> </bean> <!-- 将 Jackson2HttpMessageConverter 的默认格式化输出设为 true --> <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"> <property name="prettyPrint" value="true"/> </bean> </mvc:message-converters> </mvc:annotation-driven> <bean id="contentNegotiationManager" class="org.springframework.web.accept.ContentNegotiationManagerFactoryBean"> <property name="ignoreAcceptHeader" value="true" /> <property name="defaultContentType" value="application/json" /> <property name="mediaTypes" > <value> json=application/json xml=application/xml </value> </property> </bean> |
13
swim2sun 2016-11-18 16:51:53 +08:00
这不是 SpringMVC 的问题,因为你 value 的类型是 String ,所以 Jackson 自然会帮你转义以保证输出后 JSON 的这个字段的类型也是 String 。
你可以把 Value 的类型设置成 JsonNode ,或者其他对象。 你也可以试试 @reeco 说的`@JsonRawValue`注解。 |
14
Infernalzero 2016-11-18 17:15:16 +08:00
首先你 message converter 用的是啥,然后这个 value 又是怎么写的?不如把那段代码贴出来容易看出问题
|