美文网首页
Gson & FastJson 序列化

Gson & FastJson 序列化

作者: 黄宝玲_1003 | 来源:发表于2019-05-28 10:54 被阅读0次

显示序列化空值

当对象含有空值

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"}

相关文章

网友评论

      本文标题:Gson & FastJson 序列化

      本文链接:https://www.haomeiwen.com/subject/lwjrtctx.html