Json使用之FastJson

Posted 嗨小叔的程序猿之路

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Json使用之FastJson相关的知识,希望对你有一定的参考价值。

一、API

    Fastjson入口类是com.alibaba.fastjson.JSON, 主要API是JSON.toJSONString和parseObject,使用fastjson要注意要转换的类必须有默认的无参构造方法。    

  • 序列化 : String jsonString = JSON.toJSONString(obj);

  • 反序列化 :VO vo = JSON.parseObject("jsonString", VO.class);

  • 泛型反序列化 :List<VO> list = JSON.parseObject("jsonString", new TypeReference<List<VO>>(){});(注:VO必须有默认无参构造方法)

其他API:

// 1、把JSON文本parse为JSONObject或者JSONArray 

    public static final Object parse(String text);

// 2、把JSON文本parse成JSONObject    

    public static final JSONObject parseObject(String text); 

// 3、把JSON文本parse为JavaBean 

    public static final <T> T parseObject(String text, Class<T> clazz); 

// 4、把JSON文本parse成JSONArray 

    public static final JSONArray parseArray(String text);

// 5、把JSON文本parse成JavaBean集合 

    public static final <T> List<T> parseArray(String text, Class<T> clazz); 

 // 6、将JavaBean序列化为JSON文本 

    public static final String toJSONString(Object object);

 // 7、将JavaBean序列化为带格式的JSON文本 

    public static final String toJSONString(Object object, boolean prettyFormat); 

// 8、将JavaBean转换为JSONObject或者JSONArray。

    public static final Object toJSON(Object javaObject); 

注:SerializeWriter:相当于StringBuffer ;JSONArray:相当于List ;JSONObject:相当于Map

二、FastJson对于json格式字符串的解析主要用到了一下三个类:

  • JSON:fastJson的解析器,用于JSON格式字符串与JSON对象及javaBean之间的转换。

  • JSONObject:fastJson提供的json对象。

  • JSONArray:fastJson提供json数组对象。

三、Fastjson的SerializerFeature序列化属性

    有时候进行JSON转换的时候,null对应的key已经被过滤掉;如果我们不想要过滤的化,那么我们就需要用到fastjson的SerializerFeature序列化属性

    也就是这个方法:JSONObject.toJSONString(Object object, SerializerFeature... features)

    

  • QuoteFieldNames:输出key时是否使用双引号,默认为true

  • WriteMapNullValue:是否输出值为null的字段,默认为false 

  • WriteNullNumberAsZero:数值字段如果为null,输出为0,而非null 

  • WriteNullListAsEmptyList字段如果为null,输出为[],而非null 

  • WriteNullStringAsEmpty字符类型字段如果为null,输出为”“,而非null 

  • WriteNullBooleanAsFalseBoolean字段如果为null,输出为false,而非null

四、项目实战(代码)

    依旧沿用之前(、)讲解的两个对象,大致如下所示,省略get\set方法

Json使用之FastJson(三)

2、转换代码如下(各位可根据使用,写一个工具类来可能更简洁易懂写):

Json使用之FastJson(三)

Json使用之FastJson(三)

Json使用之FastJson(三)

3、运行结果:



以上是关于Json使用之FastJson的主要内容,如果未能解决你的问题,请参考以下文章

FastJsonfastjson序列化保持字段顺序

FastJson的使用

Fastjson1.2.24 反序列化任意命令执行

Fastjson1.2.24 反序列化任意命令执行

fastjson

Fastjson对复杂对象进行序列化