显示序列化空值
当对象含有空值
Map<String, String> map = new HashMap<>();
map.put("name", "Lily");
map.put("age", "18");
map.put("grade", null);
默认情况下对象转json字符串:
String s = JSONObject.toJSONString(map);
System.out.println(s); // {"name":"Lily","age":"18"}
String gson = new Gson().toJson(map);
System.out.println(gson); // {"name":"Lily","age":"18"}
序列化会过滤掉null值,如果要显示空值需要对序列化特征进行设置。
String sNew = JSONObject.toJSONString(map, SerializerFeature.WriteMapNullValue);
System.out.println(sNew); // {"grade":null,"name":"Lily","age":"18"}
String gsonNew = new GsonBuilder().serializeNulls().create().toJson(map);
System.out.println(gsonNew); // {"grade":null,"name":"Lily","age":"18"}
替换序列化字段名
有一个对象
package com.sunseaiot.apollo.push.task.dev;
import com.alibaba.fastjson.annotation.JSONField;
import com.google.gson.annotations.SerializedName;
import lombok.Data;
/**
* @author huangbaoling
* @date 2019/5/28 10:58 AM
*/
@Data
public class Student {
@SerializedName("NAME") // Gson替换序列化对象名
private String name;
@JSONField(name = "AGE") // fastjson替换序列化对象名
private String age;
private String grade;
}
测试
Student student = new Student();
student.setName("黄宝玲");
student.setAge("22");
String stu = JSONObject.toJSONString(student);
System.out.println(stu); // {"AGE":"22","name":"黄宝玲"}
String gsonStu = new Gson().toJson(student);
System.out.println(gsonStu); // {"NAME":"黄宝玲","age":"22"}
网友评论