开发者社区> 问答> 正文

SpringMVC4 ResponseBody json 如何配置返回null-配置报错

"

<code class=""language-java"">    @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而不是空字符串。

"

展开
收起
montos 2020-06-01 21:07:08 448 0
1 条回答
写回答
取消 提交回答
  • "

        $.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

    " "
        $.ajaxSetup({
            dataFilter: function (data, type) {
                if (type === 'json' && data === '') {
                    return null;
                } else {
                    return data;
                }
            }
        });

    临时出了个下下策。

    ######

    return "null";

    ######return null是一种很糟糕的返回值,更好的做![image.png](https://ucc.alicdn.com/pic/developer-ecology/0412c311c89f4b74abd6b7eac8d66ebe.png) ![image.png](https://ucc.alicdn.com/pic/developer-ecology/05e0ff79b2364f709a5460e216b246c1.png) 法是返回一个Collections.emptyMap()######

    你返回一个null出去,是很不友好的,你要保证这是个json格式才行

    ######

    null 是对于类似Java这样的语言,有一些是用nil之类的来描述的。所以,正常情况下,不要假设客户端能处理Null,而是告诉客户端,要么是空字符串,要么直接从服务器端过滤掉null值。

    ######

    //这个是不是你想要的?
    @JsonInclude.Include.NON_NULL

    "
    2020-06-01 21:07:29
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载