通过fastjson将一个对象序列化为json,同时加入指定的序列化逻辑

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过fastjson将一个对象序列化为json,同时加入指定的序列化逻辑相关的知识,希望对你有一定的参考价值。

主函数:

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.serializer.ValueFilter;
import com.google.common.base.Preconditions;

public class xiaomi {
    public static void main(String[] args) {
        A a = new A();
        String json =ok.object2Json(a);
        System.out.println(json);
    }
}

实体类:

技术分享
class A{
    int a;
    int b=1;
    String des ="wuhan";
    String dep ="xiantao";
    public String getDes() {
        return des;
    }
    public void setDes(String des) {
        this.des = des;
    }
    public String getDep() {
        return dep;
    }
    public void setDep(String dep) {
        this.dep = dep;
    }
    public int getA() {
        return a;
    }
    public void setA(int a) {
        this.a = a;
    }
    public int getB() {
        return b;
    }
    public void setB(int b) {
        this.b = b;
    }
}
实体类

序列化类:

class ok{
    public static String object2Json(Object o){
        Preconditions.checkNotNull(o);
        String json = JSON.toJSONString(o, new ValueFilter() {
            @Override
            public Object process(Object object, String name, Object value) {
                if (name == "a" && value.equals(0))//当有属性a的至等于0时,json的值赋为null
                    return null;
                else if (name == "d" && value == null)//当有属性d的至等于null时,json的值赋为"",此处因为实体类A里没有名字为d的属性,故实际不会被执行
                    return "";
                return value;
            }
        });
        return json;
    }
}

运行结果:

{"b":1,"dep":"xiantao","des":"wuhan"}

Process finished with exit code 0

 

总结:类a的属性a,因为值等于零,最后json对应的值被判为空,故最后不加入序列化。

以上是关于通过fastjson将一个对象序列化为json,同时加入指定的序列化逻辑的主要内容,如果未能解决你的问题,请参考以下文章

Fastjson对复杂对象进行序列化

利用fastjson反序列化json为对象和对象数组

fastjson进行json的解析和序列化

FastJson使用技巧

Flask 数据json序列化(四)

fastjson序列化乱序问题