Gson & FastJson 序列化

显示序列化空值

当对象含有空值

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"}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 概要 64学时 3.5学分 章节安排 电子商务网站概况 HTML5+CSS3 JavaScript Node 电子...
    阿啊阿吖丁阅读 9,431评论 0 3
  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,539评论 0 5
  • ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常。 O...
    我想起个好名字阅读 5,500评论 0 9
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,174评论 1 32
  • 一.什么是对象序列化? 对象序列化是指将对象的状态转换为字符串(来自我这菜鸟的理解,好像有些书上也是这么说的,浅显...
    兜兜里冒糖糖阅读 407评论 0 0