最近在工作中发现问题fastJson转换为JSONString时丢失值为null的问题特此解决。
public class test001 {
public static void main(String[] args) {
JSONObject jsonObject = new JSONObject();
jsonObject.put("foo1", "bar");
jsonObject.put("foo2", "baz");
jsonObject.put("foo3", "");
jsonObject.put("foo4", null);
String jsonString = JSON.toJSONString(jsonObject);
System.out.println(jsonString);
/**
*输出结果
* {"foo1":"bar","foo2":"baz","foo3":""}
*/
// JSON.toJSONString(jsonObject, SerializerFeature.WriteMapNullValue,SerializerFeature.WriteNullStringAsEmpty));
// String str = JSON.toJSONString(jsonString, JSONWriter.Feature.WriteNullListAsEmpty);
// System.out.println(str);
JSONObject jsonObject1 = new JSONObject();
jsonObject1.put("foo1", new ArrayList<>());
jsonObject1.put("", null);
jsonObject1.put("foo3", "");
jsonObject1.put("foo4", null);
jsonObject1.put(null, "");
// String str1= JSON.toJSONString(jsonObject1,JSONWriter.Feature.WriteNullListAsEmpty);
String str2= JSON.toJSONString(jsonObject1,JSONWriter.Feature.WriteNulls);
// System.out.println(str1);
System.out.println(str2);
/**
*输出结果
* {"foo1":[],"":"","foo3":"","foo4":null,"null":""}
*/
String str3= JSON.toJSONString(jsonObject1);
// System.out.println(str1);
System.out.println(str3);
/**
*输出结果
* {"foo1":[],"":"","foo3":"",null:""}
*/
}
}
只需要在转换的后面加上
String str2= JSON.toJSONString(jsonObject1,JSONWriter.Feature.WriteNulls);
指定转换的格式即可,
由于这个转换规则时可变参数,既可以指定多个规则。
以下格式不在讲述自己可以尝试代码