FastJson

参考文章

Pom依赖

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.43</version>
</dependency>

说明

Bean的属性是私有的,一定要有set,get方法,否则序列化失败。

常用方法

字符串-》JSONObject:

JSONObject可以看作特殊的Map。

public static JSONObject parseObject(String text)

JSONObject jsonObject = JSONObject.parseObject(jsonSStrtr);

Bean-》字符串:

public static String toJSONString(Object object, SerializeConfig config, SerializerFeature… features)

后面两个是可选参数。

参数一:Bean

Bean bean = new Bean();
String text = JSON.toJSONString(bean);

参数二:SerializeConfig

指定序列化策略。

SerializeConfig config = new SerializeConfig();
//配置需要格式化的Double类
config.put(Double.class, new DoubleSerializer(new DecimalFormat("#.##")));
//打包Json报文
String text = JSON.toJSONString(bean, config);

序列化策略:
DoubleSerializer:
指定double类型序列化策略。

new DoubleSerializer(new DecimalFormat("#.##")

参数三:SerializeFilter:

序列化过滤器。序列化指定特殊规则。

NameFilter

对序列化的key进行处理。
NameFilter valueFilter = new NameFilter() {
     @Override
     public String process(Object object, String name, Object value) {
         return name + "_new";
     }
};
Header header = Header.builder()
        .companyId("343473947")
        .build();
System.out.println("过滤前:" + JSON.toJSONString(header));
System.out.println("过滤后:" + JSON.toJSONString(header, valueFilter));

ValueFilter

参数四:SerializerFeature

指定序列化特征。JSONObject.toJSONString(user,SerializerFeature.WriteMapNullValue)

取值含义
WriteMapNullValue值为null的不进行序列化

@JSONField:

修饰属性。

name

额外指定序列化名称。

@JSONField(name="ID")
private int id;

alternateNames

反序列化指定别名,仅仅用于反序列化。

@JSONField(alternateNames = {"name", "Name"})
    private String name;

format:

属性为日期,可以格式化日期。

@JSONField(format="yyyyMMdd")
public Date date;

serialize

指定当前字段是否序列化,默认true。

@JSONField(serialize=false)
public Date date;

ordinal:

指定序列化顺序,按照指定格式展示json字符串属性。

 @JSONField(ordinal = 3)
 private int f0;
 @JSONField(ordinal = 2)
 private int f1;
 @JSONField(ordinal = 1)
 private int f2;

serializeUsing

自定义序列化策略。

public static class A {
        @JSONField(serializeUsing = AValueSerializer.class)
        public int value;
    }

    public static class AValueSerializer implements ObjectSerializer {
        @Override
        public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType,
                          int features) throws IOException {
            Integer value = (Integer) object;
            String text = value + "元";
            serializer.write(text);
        }
    }

jsonDirect

属性为字符串类型,json字符串不会被转义。

 	B b = new B();
	b.id = 9999;
	b.value = "{}";
	String json = JSON.toJSONString(b);
	System.out.println(json);
    
    public static class B{
        public int id;
        @JSONField(jsonDirect = true)
        public String value;
    }
结果:{"id":"999";"value":"{}"}

@JsonFormat

对象为日期,指定日期序列化格式。

pattern

指定日期序列化格式。

@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")

timezone

指定时区。

@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")

对象为数字-BigDicemal

@JsonFormat(pattern = "0.00")

无小数位:0
一位小数:0.0
两位小数:0.00
千分位表示 无小数: #,##0
千分位表示 一位小数: #,##0.0
千分位表示 两位小数: #,##0.00

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页