天天看点

FastJson的使用方法前言一、FastJson是什么?二、使用步骤

FastJson的使用方法

  • 前言
  • 一、FastJson是什么?
  • 二、使用步骤
    • 1.引入Pom依赖
    • 2.使用FastJson将对象转JSON格式
    • 3.使用FastJson将JSON格式转为对象或集合

前言

关于FastJson大家一定都有了解,那么对于刚接触的朋友来说可能有点半懵半懂的感觉,那么我就来分享一下自己的理解,如果有不对的地方希望大家指出来,共同进步~

一、FastJson是什么?

Fastjson 是一个 Java 库,可以将 Java 对象转换为 JSON 格式,当然它也可以将 JSON 字符串转换为 Java 对象。

Fastjson 可以操作任何 Java 对象,即使是一些预先存在的没有源码的对象。

Fastjson 源码地址:https://github.com/alibaba/fastjson

Fastjson 中文 Wiki:https://github.com/alibaba/fastjson/wiki/Quick-Start-CN

二、使用步骤

1.引入Pom依赖

代码如下:

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

2.使用FastJson将对象转JSON格式

代码如下:

//对象(可以是任何你能想到的格式,简单对象,集合,对象集合等)
Object object=new Object();
String json=JSON.toJSONString(object);
           

此时的json就是转化后的json格式数据,根据object的类型来决定格式,

如果是对象的话,格式为:{“key”:“value”,“key”:“value”},如果为

集合的话,格式为:[Object,Object]。

注意,这里不管是对象还是集合,对于里面的值的类型是没有限制的,也就是对面里面的value可以放集合也可以放对象,集合里面可以放集合也可以放对象,但是放集合的话必须要是key:value的键值对格式(其实就是对象),例如:[{“list1”:[],“list2”:[]},{“list1”:[],“list2”:[]}]

3.使用FastJson将JSON格式转为对象或集合

代码如下:

//这里我只介绍我用的比较多的几种转化
//1.JSON==>Map
String json = "{\"demo\":\"123\"}";
Map<String,Object> map=JSON.parseObject(json,Map.class);
//2.JSON==>List
String json = "[{\"demo\":\"123\"}]";
List list=JSON.parseObject(json,List.class);
           

注意这里的第二个参数,很关键~~~

这里的第二个参数在parseObject的时候代表的是将json格式的字符串转化为

这个参数类型的对象。什么意思呢,就是如果你写的是Map.class,那么这里就是

将这个json转成Map对象,如果是List.class,那么就会转为List集合对象。

那么有的小伙伴可能就有疑问了,那这个方法是不是就可以满足所有需求呢,答案当时不是啦,对于集合而言,FastJson提供了另一个方法供我们使用:

代码如下:

String json="[1,2,3]";
//注意这里使用了泛型,大部分时候List肯定是要用泛型的
List<Integer> list=JSON.parseArray(json,Integer.class);
           
这里大家有没有发现我使用的是parseArray这个方法,这个方法的第二个参数大家就要注意了,他的含义和parseObject的第二个参数可不一样。他代表的是集合的泛型的类型。这里的意思就是将json转成Integer类型的集合。举个例子:
String json = "[{\"demo\":\"123\"}]";
//还是这个json,但是这里使用另一种方式转化
List<Map<String,Object>> list=JSON.parseArray(json,Map.class);
/*
这里大家就会发现,上面这个是不行的,发现会提示提供的参数类型与需要的不匹配,
需要的是Map<String,Object>,而提供的是Map,那这种情况怎么办呢,我们就换一种
方法,用parseObject来解决
*/
List<Map<String,Object>> list=JSON.parseObject(json,List.class);
/*
但是要注意,这个时候是会提示未经检查的分配,将List转为
List<Map<String,Object>>,这里可以使用new TypeReference<>(){}来完成泛型
的转换,示例如下:
*/
List<Map<String,Object>> list= JSON.parseObject(json, new TypeReference<List<Map<String,Object>>>(){});
           

这里提一下,如果需要在parseObject或者parseArray里面转化的时候,第一个参数一定要是json格式的字符串,这里不建议大家使用手动拼接,建议直接使用JSON.toJSONString(),来转化,有的时候手动拼接费时费力而且容易出现错误,导致格式不对然后一堆问题,比如给前台数据变为字符串等等,所以大家要注意了~