使用JSON.toJSONString
方法将Java对象转化为JSON字符串时,默认会将值为null的属性过滤掉。如果需要在生成的JSON字符串中保留null属性,可以通过设置输出时的SerializerFeature
来实现。
具体步骤如下:
- 导入FastJSON库的依赖,示例代码如下:
xml
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.78</version>
</dependency>
- 创建Java对象并将其转化为JSON字符串,设置
SerializerFeature.WriteMapNullValue
选项的值为true
。
示例代码如下:
```java
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.serializer.SerializerFeature;
public class User {
private String name;
private Integer age;
private String address;
//getter & setter
}
public class Demo {
public static void main(String[] args) {
User user = new User();
user.setName("张三");
user.setAge(null);
user.setAddress(null);
String jsonStr = JSON.toJSONString(user,
SerializerFeature.WriteMapNullValue);
System.out.println(jsonStr);
}
}
```
输出结果如下:
{"address":null,"age":null,"name":"张三"}
- 除了在
toJSONString
方法中直接设置,还可以通过JSON.toJSONString
中的SerializeConfig
参数配置默认的序列化属性,使得所有的Java对象序列化时都能保留null值属性。示例代码如下:
```java
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.serializer.SerializeConfig;
import com.alibaba.fastjson.serializer.SerializerFeature;
public class User {
private String name;
private Integer age;
private String address;
//getter & setter
}
public class Demo {
public static void main(String[] args) {
SerializeConfig config = new SerializeConfig();
config.setSerializeNulls(true);
User user = new User();
user.setName(null);
user.setAge(20);
user.setAddress("上海市");
String jsonStr = JSON.toJSONString(user,
config, SerializerFeature.PrettyFormat);
System.out.println(jsonStr);
}
}
```
输出结果如下:
{
"address": "上海市",
"age": 20,
"name": null
}
注意:当使用JSON.toJSONString
的方式对Java对象进行序列化时,无法保证所有的Java对象都能成功转化为JSON字符串,因为JSON格式的数据和Java对象的格式有所不同,如果Java对象中包含不支持的字段或类型,会抛出异常。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:使用JSON.toJSONString格式化成json字符串时保留null属性 - Python技术站