fastJSON
使用
-
在pom文件中加入依赖
<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson --> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.58</version> </dependency>
-
序列化和反序列化
String text = JSON.toJSONString(obj); //序列化 VO vo = JSON.parseObject("{...}", VO.class); //反序列化
-
FastJson 在进行操作时,是根据 getter 和 setter 的方法进行的,并不是依据 Field 进行。若属性是私有的,必须有 set 方法。否则无法反序列化。
@JSONField
@JSONField注解可以用在方法(method),属性(field)以及方法中的参数(parameter)上
JSONField默认支持类型
public @interface JSONField {
int ordinal() default 0; //指定字段的顺序
String name() default ""; //指定JSON串中key的名称
String format() default ""; //配置Date序列化和反序列使用日期格式
boolean serialize() default true; //指定字段不序列化
boolean deserialize() default true;
SerializerFeature[] serialzeFeatures() default {};
Feature[] parseFeatures() default {};
String label() default "";
boolean jsonDirect() default false;
Class<?> serializeUsing() default Void.class;
Class<?> deserializeUsing() default Void.class;
String[] alternateNames() default {};
boolean unwrapped() default false;
}
参考:
基本操作
序列化
1、Map转JSON
2、List< Map>转JSON
3、自定义JavaBean转JSON
4、序列化后将JSON字符串格式化输出
5、FastJSON将java.util.Date转成long(默认转long)
6、使用SerializerFeature特性格式化日期
7、指定输出日期格式
8、输出使用单引号
9、JSON格式化
10、输出Null字段
11、序列化是写入类型信息
由于序列化带了类型信息,使得反序列化时能够自动进行类型识别。如果序列化是没有加入类型信息(SerializerFeature.WriteClassName),则反序列化(强制转换)就会报错(java.lang.ClassCastException)。
反序列化
1、指定Class信息反序列化
2、集合反序列化
3、泛型的反序列化(使用TypeReference传入类型信息)
,JSON字符串转Map
4、将Map转成JSONObject,然后添加元素,输出
JSONObject,JSONArray是JSON的两个子类。
JSONObject相当于Map<String, Object>,
JSONArray相当于List< Object>。
5、将List对象转成JSONArray,然后输出