@GetMapping("/test.do")
@ResponseBody
public Map<String, Object> test() {
Map<String, Object> map = new HashMap<>();
map.put("aa", 11);
return null;
}
前端请求会看到空白,单是jQuery Ajax无法解析这种JSON、会导致 parseerror。
javascript:
JSON.parse("") 执行会报错。
JSON.parse(null) 或者 JSON.parse('null') 执行正常。
Spring MVC 配置:
<mvc:annotation-driven>
<mvc:message-converters>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="objectMapper">
<bean class="com.fasterxml.jackson.databind.ObjectMapper">
<property name="serializationInclusion">
<value type="com.fasterxml.jackson.annotation.JsonInclude.Include">NON_ABSENT</value>
</property>
</bean>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
Include 的都值尝试了都不能让ResponseBody返回null而不是空字符串。
$.ajaxSetup({
dataFilter: function (data, type) {
if (type === 'json' && data === '') {
return null;
} else {
return data;
}
}
});
临时出了个下下策。
######return "null";
######return null是一种很糟糕的返回值,更好的做法是返回一个Collections.emptyMap()######你返回一个null出去,是很不友好的,你要保证这是个json格式才行
######null 是对于类似Java这样的语言,有一些是用nil之类的来描述的。所以,正常情况下,不要假设客户端能处理Null,而是告诉客户端,要么是空字符串,要么直接从服务器端过滤掉null值。
######//这个是不是你想要的?
@JsonInclude.Include.NON_NULL
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。