文档章节

spring mvc json null空转""空串

angle_小帅
 angle_小帅
发布于 2015/03/11 09:53
字数 224
阅读 5005
收藏 6

解决方法和网上的 不太一样 因为SerializerProvider  为StdSerializerProvider的父类,直接从SerializerProvider .setNullValueSerializer()方法 不允许 所以通过子类StdSerializerProvider调用此方法

applicationContext.xml

    
    <bean  
        class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">  
        <property name="messageConverters">  
            <list>  
               <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">  
                   <property name="supportedMediaTypes">  
                       <list>  
                           <value>text/plain;charset=UTF-8</value>  
                           <value>application/json;charset=UTF-8</value>  
                       </list>  
                   </property>  
                   <property name="objectMapper">  
                       <bean class="com.interceptor.ObjectMappingCustomer"></bean>  
                   </property>  
               </bean>     
            </list>  
        </property>  
    </bean>   


ObjectMappingCustomer.java

    package com.interceptor;  
      
    import java.io.IOException;

import org.codehaus.jackson.JsonGenerator;
import org.codehaus.jackson.JsonParser;
import org.codehaus.jackson.JsonProcessingException;
import org.codehaus.jackson.map.JsonSerializer;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.map.SerializerProvider;
import org.codehaus.jackson.map.ser.StdSerializerProvider;
      
    public class ObjectMappingCustomer extends ObjectMapper  
    {  
      
        public ObjectMappingCustomer()  
        {  
            super();  
            // 允许单引号  
            this.configure(JsonParser.Feature.ALLOW_SINGLE_QUOTES, true);  
            // 字段和值都加引号  
            this.configure(JsonParser.Feature.ALLOW_UNQUOTED_FIELD_NAMES, true);  
            // 数字也加引号  
            this.configure(JsonGenerator.Feature.WRITE_NUMBERS_AS_STRINGS, true);  
            this.configure(JsonGenerator.Feature.QUOTE_NON_NUMERIC_NUMBERS, true); 
            // 空值处理为空串  
            StdSerializerProvider sp = (StdSerializerProvider) this.getSerializerProvider();
            sp.setNullValueSerializer(new JsonSerializer<Object>(){

                @Override
                public void serialize(Object value, JsonGenerator jg,
                        SerializerProvider sp) throws IOException,
                        JsonProcessingException {
                     jg.writeString("");  
                }
                
            });
      
        }  
    }


然后在springmvc  controller里加    @ResponseBody注解就可以了

需要jackson-all.jar


© 著作权归作者所有

angle_小帅
粉丝 11
博文 29
码字总数 22265
作品 0
青岛
程序员
私信 提问
加载中

评论(5)

我们在路上90
我们在路上90
我在 springboot 里测试的,MappingJacksonHttpMessageConverter注入的是 fasterxml 下的 objectMapper,楼主这里用的是 codehaus 下的 objectMapper,spring 的配置根本注入不进去吧?!!!
angle_小帅
angle_小帅 博主

引用来自“宇航员们”的评论

空对象 或者空集合 也会转成空字符串 类型报错,前端解析回忆问题

引用来自“angle_小帅”的评论

大神 前段解析回忆是什么~~

引用来自“LeasonToMe”的评论

你这个不光把String是null的转成空字符串了,如果java类里有个属性是list,或者date或者其他的类型,它的值是nul,也会转成空字符串。但是前端因为这个空字符串对应的属性类型是list的,解析会报错。正确的应该是当list是null的时候,json对应的值是空数组,而不是空字符串。
额,没考虑这个,当时的ios 和android的前端是配合php的,我们java接手,从新写接口,他们就是要空串。。。我们原来给null时候,他们程序闪退,就吧所有json里null没有的都转成“”放里了。。。
WhatAreYouDoing
WhatAreYouDoing

引用来自“宇航员们”的评论

空对象 或者空集合 也会转成空字符串 类型报错,前端解析回忆问题

引用来自“angle_小帅”的评论

大神 前段解析回忆是什么~~
你这个不光把String是null的转成空字符串了,如果java类里有个属性是list,或者date或者其他的类型,它的值是nul,也会转成空字符串。但是前端因为这个空字符串对应的属性类型是list的,解析会报错。正确的应该是当list是null的时候,json对应的值是空数组,而不是空字符串。
angle_小帅
angle_小帅 博主

引用来自“宇航员们”的评论

空对象 或者空集合 也会转成空字符串 类型报错,前端解析回忆问题
大神 前段解析回忆是什么~~
银河缘木
银河缘木
空对象 或者空集合 也会转成空字符串 类型报错,前端解析回忆问题
判断JSON是否为空 (用spring mvc @ResponseBody 自动返回的json串 )

判断JSON是否为空 (用spring mvc @ResponseBody 自动返回的json串 ) 知识分类:EXTJS spring mvc json 记录时间: 20150708 简单描述:用json.length 属性长度来判断是否为空,在此过程中s...

AnyLiem
2015/07/08
816
0
Spring MVC 中如需设置Jackson的一些参数,可以这么干

参考资料 1. http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/http/converter/json/Jackson2ObjectMapperFactoryBean.html mvc:annotation-drivenmvc:message-c......

chuangyu
2014/12/19
18.4K
0
SpringMVC4 ResponseBody json 如何配置返回null而不是空字符串

前端请求会看到空白,单是jQuery Ajax无法解析这种JSON、会导致 parseerror。 javascript: JSON.parse("") 执行会报错。 JSON.parse(null) 或者 JSON.parse('null') 执行正常。 Spring MVC 配......

蓝水晶飞机
2018/01/12
756
6
springMVC 拦截器 @RequestBody BufferedReader

spring MVC controller 中用@RequestBody注解获取json字符串。想加一层拦截器,对请求进行参数验证,于是写了一个拦截器,用BufferedReader br = new BufferedReader(new InputStreamReader(...

努力学的程序员
2015/10/29
4.1K
5
spring web 4.1处理json

Spring mvc处理json,我们都知道使用@ResponseBody,处理xml也是用此注解。如果想spring mvc的使用@ResponseBody注解处理json,我们需要加入一些处理bean,也可以使用默认spring提供的。 通过...

引鸩怼孑
2015/07/09
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

Replugin借助“UI进程”来快速释放Dex

public static boolean preload(PluginInfo pi) { if (pi == null) { return false; } // 借助“UI进程”来快速释放Dex(见PluginFastInstallProviderProxy的说明) return PluginFastInsta......

Gemini-Lin
55分钟前
4
0
Hibernate 5 的模块/包(modules/artifacts)

Hibernate 的功能被拆分成一系列的模块/包(modules/artifacts),其目的是为了对依赖进行独立(模块化)。 模块名称 说明 hibernate-core 这个是 Hibernate 的主要(main (core))模块。定义...

honeymoose
今天
4
0
CSS--属性

一、溢出 当内容多,元素区域小的时候,就会产生溢出效果,默认是纵向溢出 横向溢出:在内容和容器之间再套一层容器,并且内部容器要比外部容器宽 属性:overflow/overflow-x/overflow-y 取值...

wytao1995
今天
4
0
精华帖

第一章 jQuery简介 jQuery是一个JavaScript库 jQuery具备简洁的语法和跨平台的兼容性 简化了JavaScript的操作。 在页面中引入jQuery jQuery是一个JavaScript脚本库,不需要特别的安装,只需要...

流川偑
今天
7
0
语音对话英语翻译在线翻译成中文哪个方法好用

想要进行将中文翻译成英文,或者将英文翻译成中文的操作,其实有一个非常简单的工具就能够帮助完成将语音进行翻译转换的软件。 在应用市场或者百度手机助手等各大应用渠道里面就能够找到一款...

401恶户
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部