jackson ObjectMapper 序列化成json,属性值为null时转换为""空字符串

import java.io.IOException;

import org.codehaus.jackson.JsonGenerationException;
import org.codehaus.jackson.JsonGenerator;
import org.codehaus.jackson.JsonProcessingException;
import org.codehaus.jackson.map.JsonMappingException;
import org.codehaus.jackson.map.JsonSerializer;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.map.SerializerProvider;
import org.junit.Test;

public class JsonTest {

    protected static String getJson(Object obj) {
        ObjectMapper mapper = new ObjectMapper();
        // null替换为""
        mapper.getSerializerProvider().setNullValueSerializer(new JsonSerializer() {
            @Override
            public void serialize(Object arg0, JsonGenerator arg1, SerializerProvider arg2) throws IOException, JsonProcessingException {
                arg1.writeString("");
            }
        });
        String str = null;
        try {
            str = mapper.writeValueAsString(obj);
        } catch (JsonGenerationException e) {
            e.printStackTrace();
        } catch (JsonMappingException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return str;
    }

    @Test
    public void test() {
        System.out.println(getJson(new TestObject()));//TestObject必须是POJO对象
    }

}

class TestObject {
    String name = "张三";
    String sex = null;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

}
 
  

运行结果:{"name":"张三","sex":""}

maven依赖

 

		
			org.codehaus.jackson
			jackson-mapper-asl
			1.9.13
		


如果有帮到您的话,记得帮忙点下“顶”哟!

 

 

 


 

你可能感兴趣的:(#,Java基础)