前提原因:前端需要没有null值的json
解决方案:用枚举写个单例模式的方法,把json中的null替换成空字符串""
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import java.util.Iterator;
public enum JsonTool {
/**
* 用枚举设计单例模式!
*/
INSTANCE;
/**
* 将json对象中包含的null和JSONNull属性修改成""
*/
public JSONObject filterNull(JSONObject jsonObj) {
Iterator<String> it = jsonObj.keySet().iterator();
Object obj;
String key;
while (it.hasNext()) {
key = it.next();
obj = jsonObj.get(key);
if (obj instanceof JSONObject) {
filterNull((JSONObject) obj);
}
if (obj instanceof JSONArray) {
JSONArray objArr = (JSONArray) obj;
for (int i = 0; i < objArr.size(); i++) {
filterNull(objArr.getJSONObject(i));
}
}
if (obj == null) {
jsonObj.put(key, "");
}
}
return jsonObj;
}
}
调用方法:
JsonTool.INSTANCE.filterNull(json)