fastjson 转换为json字符串,保留null字段
原创 bluesky 发表于:2018-06-05 14:05:15
  阅读 :1841   收藏   编辑

fasjson 版本1.2.47测试成功

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.47</version>
</dependency>

在版本1.2.7下测试无效

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.7</version>
</dependency>

测试bean

package com.xx;

import java.io.Serializable;
import java.util.List;


public class Bean implements Serializable{

	private Integer id;
	private String name;
	private List<Bean> cBean;
	
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public List<Bean> getcBean() {
		return cBean;
	}
	public void setcBean(List<Bean> cBean) {
		this.cBean = cBean;
	}
	
	
	
}

测试类

package com.xx;

import java.util.ArrayList;
import java.util.List;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.serializer.SerializerFeature;

public class Test {
	
	public static void main(String[] args) {
		Bean bean = new Bean();
		bean.setId(1);
		
		Bean bean2 = new Bean();
		bean2.setName("Aaron");
		
		List<Bean> list = new ArrayList<Bean>();
		list.add(bean);
		list.add(bean2);
		
		/**
		 * bean -> json str 
		 */
		String tmp = JSON.toJSONString(bean,SerializerFeature.WriteNullStringAsEmpty);
		System.err.println(tmp);
		
		/**
		 * list bean -> json str
		 */
		String str = JSONArray.toJSONString(list,
				SerializerFeature.WriteNullStringAsEmpty, //字符转“”
				SerializerFeature.WriteNullNumberAsZero,  //Number转0
				SerializerFeature.WriteNullListAsEmpty);  //list转 “”
		System.err.println(str);
	}

}

Fastjson的SerializerFeature序列化属性

  • QuoteFieldNames———-输出key时是否使用双引号,默认为true 

  • WriteMapNullValue——–是否输出值为null的字段,默认为false 

  • WriteNullNumberAsZero—-数值字段如果为null,输出为0,而非null 

  • WriteNullListAsEmpty—–List字段如果为null,输出为[],而非null 

  • WriteNullStringAsEmpty—字符类型字段如果为null,输出为”“,而非null 

  • WriteNullBooleanAsFalse–Boolean字段如果为null,输出为false,而非null