json--6.fastJson

1       原理图

 

2       Fastjson

2.1  JSON、JSONObject和JSONArray

JSON:fastJson的解析器,用于JSON格式字符串与JSON对象及javaBean之间的转换。它有两个子类,所以json支持的,他的子类都支持,下面的JSON都可以替换成为JSONObject

JSONObject:fastJson提供的json对象。

JSONArray:fastJson提供json数组对象。

 

2.2  jar

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

2.3  序列化和反序列化

序列化:JavaBean对象转成JSON格式的字符串。

反序列化:反序列化就是把JSON格式的字符串转化为Java Bean对象。

 

3       序列化—toJSONString

3.1  概述

 

3.2  基本的序列化--toJSONString(object)

3.2.1   概念

String objJson = JSON.toJSONString(Object object);

传入一个对象,将对象转成JSON字符串。

3.2.2   Map

 

3.2.3   List<Map>--得到数组

3.2.4   JavaBean

 

3.3  json格式--toJSONString(object, boolean);

3.3.1   概念

String objJson = JSON.toJSONString(Object object, boolean prettyFormat);

传入一个对象和一个布尔类型(是否格式化),将对象转成格式化后的JSON字符串。

3.3.2   List<map>举例

 

3.4  特殊序列化--toJSONString(object, Serializer)

3.4.1   概念

toJSONString(Object object, SerializerFeature... features) 

传入一个对象和SerializerFeature类型的可变变量。SerializerFeature是一个枚举。

com.alibaba.fastjson.serializer.SerializerFeature

 

3.4.2   日期格式化:

FastJSON可以直接对日期类型格式化,在缺省的情况下,FastJSON会将Date转成long

 

输出默认格式:

 

也可以指定输出日期格式:

 

3.4.3   输出格式单引号

参看list<map>

 

3.4.4   JSON格式化

参看list<map>

 

3.4.5   输出Null字段

缺省情况下FastJSON不输入为值Null的字段,可以使用SerializerFeature.WriteMapNullValue使其输出。

 

3.4.6   序列化是写入类型信息

由于序列化带了类型信息,使得反序列化时能够自动进行类型识别。

 

由于序列化带了类型信息,使得反序列化时能够自动进行类型识别。

如果User序列化是没有加入类型信息(SerializerFeature.WriteClassName),按照例12的做法就会报错(java.lang.ClassCastException)。

 

4       反序列化

4.1  概念

反序列化就是把JSON格式的字符串转化为JavaBean对象。

com.alibaba.fastjson.JSON提供了许多方法(多态)实现反序列化。

 

4.2  Class信息反序列化-- parseObject(json, .class)

4.2.1   Map--泛型的反序列化

泛型的反序列化(使用TypeReference传入类型信息)。

 

4.2.2   List<map>

 

4.2.3   javabean

 

4.3  数组反序列化-- parseArray

 

5       javaBean与json对象间的转换使用

javaBean与json对象间的转换使用:JSON.toJSON(obj),然后使用强制类型转换,JSONObject或者JSONArray。

 

6       JSONObject特有

 

 

 

 

 

 

 

7       JSONArray特有

 

 

8     JsonUtils

public class JsonUtils {

    // 定义jackson对象
    private static final ObjectMapper MAPPER = new ObjectMapper();

    /**
     * 将对象转换成json字符串。
     * <p>Title: pojoToJson</p>
     * <p>Description: </p>
     * @param data
     * @return
     */
    public static String objectToJson(Object data) {
       try {
         String string = MAPPER.writeValueAsString(data);
         return string;
      } catch (JsonProcessingException e) {
         e.printStackTrace();
      }
       return null;
    }
    
    /**
     * 将json结果集转化为对象
     * 
     * @param jsonData json数据
     * @param clazz 对象中的object类型
     * @return
     */
    public static <T> T jsonToPojo(String jsonData, Class<T> beanType) {
        try {
            T t = MAPPER.readValue(jsonData, beanType);
            return t;
        } catch (Exception e) {
           e.printStackTrace();
        }
        return null;
    }
    
    /**
     * 将json数据转换成pojo对象list
     * <p>Title: jsonToList</p>
     * <p>Description: </p>
     * @param jsonData
     * @param beanType
     * @return
     */
    public static <T>List<T> jsonToList(String jsonData, Class<T> beanType) {
       JavaType javaType = MAPPER.getTypeFactory().constructParametricType(List.class, beanType);
       try {
          List<T> list = MAPPER.readValue(jsonData, javaType);
          return list;
      } catch (Exception e) {
         e.printStackTrace();
      }
       return null;
    }
    
}

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值