FastJSON 默认不会包含值为 null 的字段
FastJSON 默认不会包含值为 null
的字段。这是因为 FastJSON 的 toJSONString()
方法默认会跳过 null
值字段。
FastJSON 的默认行为
FastJSON 的默认序列化行为是不包含值为 null
的字段。只有在明确指定序列化选项(如 SerializerFeature.WriteMapNullValue
)时,才会将值为 null
的字段序列化为 "key":null
。
代码验证
以下是具体的代码示例和输出:
import com.alibaba.fastjson.JSONObject;
//主函数
//@author zhouzhi
public static void main(String[] args) {
com.alibaba.fastjson.JSONObject obj_ret = new com.alibaba.fastjson.JSONObject();
obj_ret.put("key1", null);
obj_ret.put("key2", "value");
System.out.println(JSON.toJSONString(obj_ret, SerializerFeature.WriteMapNullValue));
//{"key1":null,"key2":"value"}
System.out.println(obj_ret.toJSONString());
// 输出: {"key2":"value"}
JSONObject obj_ret2 = new JSONObject();
obj_ret2.put("key1", null);
obj_ret2.put("key2", "value");
String jsonString = JSON.toJSONString(obj_ret2, SerializerFeature.SkipTransientField);
System.out.println(jsonString);
// 输出: {"key2":"value"}
}
实践代码示例:
如何包含 null
字段?
如果希望包含值为 null
的字段,需要使用 SerializerFeature.WriteMapNullValue
:
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.SerializerFeature;
public class Main {
public static void main(String[] args) {
JSONObject obj_ret = new JSONObject();
obj_ret.put("key1", null);
obj_ret.put("key2", "value");
// 包含 null 值字段的序列化
System.out.println("Include null: " + JSON.toJSONString(obj_ret, SerializerFeature.WriteMapNullValue));
}
}
输出:
{"key1":null,"key2":"value"}
总结
- 默认行为: FastJSON 的
toJSONString()
方法不会包含值为null
的字段。 - 如何包含
null
字段: 使用SerializerFeature.WriteMapNullValue
来显式启用包含null
字段的行为。