FastJson简单使用汇总

FastJson介绍

JSON协议使用方便,越来越流行,JSON的处理器有很多,这里我介绍一下FastJson,FastJson是阿里的开源框架,被不少企业使用,是一个极其优秀的Json框架,Github地址:FastJson

FastJson特点

  1. FastJson数度快,无论序列化和反序列化,都是当之无愧的fast
  2. 功能强大(支持普通JDK类包括任意Java Bean Class、Collection、Map、Date或enum)
  3. 零依赖(没有依赖其它任何类库)

FastJson简单说明

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

  1. JSON:fastJson的解析器,用于JSON格式字符串与JSON对象及javaBean之间的转换
  2. JSONObject:fastJson提供的json对象
  3. JSONArray:fastJson提供json数组对象

FastJson依赖包

Maven项目中需要使用FastJson进行Json格式字符串进行解析,在pom.xml中添加如下依赖包即可

    <!-- 引入fastjson解析json -->
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>fastjson</artifactId>
      <version>1.2.46</version>
    </dependency>

非Maven项目如何添加依赖包自行搜索

FastJson的用法

FastJson提供了众多API,包括以下场景的使用:

  • JavaBean、List、Map、复杂集合 转换成Json字符串

  • Json字符串 转换成JavaBean、List、Map、复杂集合

在测试开发场景中,我们经常需要使用到以上场景,为了便于大家更好的使用FastJson来帮助我们的测试开发工作,针对一些常用的场景进行代码演示

准备工作

为了更好的给大家演示实例,需要做下准备工作:

  • 准备JavaBean

  • 准备Json字符串

JavaBean准备

SmsSend.java实体类:短信发送相关信息,包括手机号码、发送状态

public class SmsSend {

    private String phone;

    private String status;

    public SmsSend() {

    }

    public SmsSend(String phone, String status) {
        this.phone = phone;
        this.status = status;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

}

Json字符串准备

{
    "phone":"18812345001",
    "status":"SEND_SUCCESS"
}

用法场景分类

常用场景包括各种对象转Json字符串Json字符串转各种对象

各种对象转Json字符串

  • javaBean 转 Json字符串

  • List<JavaBean> 转 Json字符串

  • List<String> 转 Json字符串

  • List<Integer> 转 Json字符串

  • Map<String, JavaBean> 转 Json字符串

  • Map<String, String> 转 Json字符串

  • Map<String, Integer> 转 Json字符串

  • Map<String, Object> 转 Json字符串

  • List<Map<String,Object>> 转 Json字符串

  • Map<String, List<JavaBean>> 转 Json字符串

其他对象转Json字符串,都使用JSON.toJSONString(JavaBean) API实现即可

JavaBean转Json字符串
    public static void main(String[] args) {

        //JavaBean 转 Json字符串
        SmsSend smsSend1 = new SmsSend("18812345001","SEND_SUCCESS");

        String json = JSON.toJSONString(smsSend1);
        System.out.println(json);

    }

输出结果:

{"phone":"18812345001","status":"SEND_SUCCESS"}
List<JavaBean> 转 Json字符串
    public static void main(String[] args) {

        //List<JavaBean> 转 Json字符串
        SmsSend smsSend2 = new SmsSend("18812345002", "SEND_SUCCESS");
        SmsSend smsSend3 = new SmsSend("18812345003", "SEND_SUCCESS");

        List<SmsSend> smsSendList = Lists.newArrayList(smsSend2,smsSend3);

        String smsSendListJson = JSON.toJSONString(smsSendList);
        System.out.println(smsSendListJson);
    }

输出结果:

[{"phone":"18812345002","status":"SEND_SUCCESS"},{"phone":"18812345003","status":"SEND_SUCCESS"}]
List<String> 转 Json字符串
    public static void main(String[] args) {

        //List<String> 转 Json字符串
        List<String> stringList = Lists.newArrayList("北京", "上海", "深圳", "杭州");

        String stringListJson = JSON.toJSONString(stringList);
        System.out.println(stringListJson);
    }

输出结果:

["北京","上海","深圳","杭州"]
List<Integer> 转 Json字符串
    public static void main(String[] args) {

        //List<Integer> 转 Json字符串
        List<Integer> integerList = Lists.newArrayList(1,2,3,4);

        String integerListJson = JSON.toJSONString(integerList);
        System.out.println(integerListJson);
    }

输出结果:

[1,2,3,4]
Map<String, JavaBean> 转 Json字符串
    public static void main(String[] args) {

         .....

        //Map<String, A> 转 Json字符串
        Map<String, SmsSend> smsSendMap = Maps.newHashMap();
        smsSendMap.put("smsSend1", smsSend1);
        smsSendMap.put("smsSend2", smsSend2);
        smsSendMap.put("smsSend3", smsSend3);

        String smsSendMapJson = JSON.toJSONString(smsSendMap);
        System.out.println(smsSendMapJson);
    }

输出结果:

{"smsSend1":{"phone":"18812345001","status":"SEND_SUCCESS"},"smsSend2":{"phone":"18812345002","status":"SEND_SUCCESS"},"smsSend3":{"phone":"18812345003","status":"SEND_SUCCESS"}}
Map<String, String> 转 Json字符串
    public static void main(String[] args) {

        //Map<String, String> 转 Json字符串
        Map<String, String> stringMap = Maps.newHashMap();
        stringMap.put("浙江省会", "杭州");
        stringMap.put("江西省会", "南昌");
        stringMap.put("湖南省会", "长沙");

        String stringMapJson = JSON.toJSONString(stringMap);
        System.out.println(stringMapJson);
    }

输出结果:

{"浙江省会":"杭州","湖南省会":"长沙","江西省会":"南昌"}
Map<String, Integer> 转 Json字符串
    public static void main(String[] args) {

        //Map<String, Integer> 转 Json字符串
        Map<String, Integer> integerMap = Maps.newHashMap();
        integerMap.put("语文", 90);
        integerMap.put("数学", 97);
        integerMap.put("英语", 95);

        String integerMapJson = JSON.toJSONString(integerMap);
        System.out.println(integerMapJson);
    }

输出结果:

{"数学":97,"语文":90,"英语":95}
Map<String, Object> 转 json字符串
    public static void main(String[] args) {

        //Map<String, Object> 转 json字符串
        Map<String, Object> objectMap = Maps.newHashMap();
        objectMap.put("浙江省会", "杭州");
        objectMap.put("江西省会", "南昌");
        objectMap.put("湖南省会", "长沙");

        String objectMapJson = JSON.toJSONString(objectMap);
        System.out.println(objectMapJson);
    }

输出结果:

{"浙江省会":"杭州","湖南省会":"长沙","江西省会":"南昌"}
List<Map<String,Object>> 转 Json字符串
    public static void main(String[] args) {

         //List<Map<String,Object>> 转 Json字符串
        Map<String, Object> objectMap2 = Maps.newHashMap();
        objectMap2.put("浙江省会", "杭州");
        objectMap2.put("江西省会", "南昌");
        objectMap2.put("湖南省会", "长沙");

        Map<String, Object> objectMap3 = Maps.newHashMap();
        objectMap3.put("江苏省会", "南京");
        objectMap3.put("安徽省会", "合肥");
        objectMap3.put("四川省会", "成都");

        List<Map<String, Object>> list1 = Lists.newArrayList(objectMap2,objectMap3);

        String list1Json = JSON.toJSONString(list1);
        System.out.println(list1Json);
    }

输出结果:

[{"浙江省会":"杭州","湖南省会":"长沙","江西省会":"南昌"},{"四川省会":"成都","江苏省会":"南京","安徽省会":"合肥"}]
Map<String, List<JavaBean>> 转 Json字符串
    public static void main(String[] args) {

        //Map<String, List<JavaBean>> 转 Json字符串
        SmsSend smsSend4 = new SmsSend("18812345004", "SEND_SUCCESS");
        SmsSend smsSend5 = new SmsSend("18812345005", "SEND_SUCCESS");
        List<SmsSend> smsSendList2 = Lists.newArrayList(smsSend4, smsSend5);

        SmsSend smsSend6 = new SmsSend("18812345006", "SEND_SUCCESS");
        SmsSend smsSend7 = new SmsSend("18812345007", "SEND_SUCCESS");
        List<SmsSend> smsSendList3 = Lists.newArrayList(smsSend6, smsSend7);

        Map<String, List<SmsSend>> listMap = Maps.newHashMap();
        listMap.put("smsSendList2",smsSendList2);
        listMap.put("smsSendList3",smsSendList3);

        String listMapJson = JSON.toJSONString(listMap);
        System.out.println(listMapJson);
    }

输出结果:

{"smsSendList3":[{"phone":"18812345006","status":"SEND_SUCCESS"},{"phone":"18812345007","status":"SEND_SUCCESS"}],"smsSendList2":[{"phone":"18812345004","status":"SEND_SUCCESS"},{"phone":"18812345005","status":"SEND_SUCCESS"}]}

Json字符串转各种对象

  • Json字符串 转 javaBean

  • Json字符串 转 List<JavaBean>

  • Json字符串 转 List<String>

  • Json字符串 转 List<Integer>

  • Json字符串 转 Map<String, JavaBean>

  • Json字符串 转 Map<String, String>

  • Json字符串 转 Map<String, Integer>

  • Json字符串 转 Map<String, Object>

  • Json字符串 转 List<Map\<String,Object>>

  • Json字符串 转 Map<String, List<JavaBean>>

  • Json字符串 转 List<Map\<String, JavaBean>>

  • Json字符串 转 List<Map<String, List<JavaBean>>>

  • Json字符串 转 Map<String, List<Map<String, JavaBean>>>

其他对象转Json字符串,都使用JSON.toJSONString(JavaBean) API实现即可

Json字符串 转 javaBean
    public static void main(String[] args) {
        //Json字符串 转 javaBean
        String json1 = "{\"phone\":\"18812345001\",\"status\":\"SEND_SUCCESS\"}";

        SmsSend smsSend = JSON.parseObject(json1, SmsSend.class);

        System.out.println("phone:" + smsSend.getPhone());
        System.out.println("status:" + smsSend.getStatus());
   }

输出结果:

phone:18812345001
status:SEND_SUCCESS
Json字符串 转 List<JavaBean>
    public static void main(String[] args) {
        //Json字符串 转 List<JavaBean>
        String json10 = "[{\"phone\":\"18812345002\",\"status\":\"SEND_SUCCESS\"},{\"phone\":\"18812345003\",\"status\":\"SEND_SUCCESS\"}]";
        List<SmsSend> smsSendList10 = JSON.parseArray(json10, SmsSend.class);

        for (SmsSend smsSend10 : smsSendList10) {
            System.out.println("phone:" + smsSend10.getPhone());
            System.out.println("status:" + smsSend10.getStatus());
        }
   }

输出结果:

phone:18812345002
status:SEND_SUCCESS
phone:18812345003
status:SEND_SUCCESS
Json字符串 转 List<String>
    public static void main(String[] args) {

        //Json字符串 转 List<String>
        String json11 = "[\"北京\",\"上海\",\"深圳\",\"杭州\"]";
        List<String> stringList11 = JSON.parseArray(json11, String.class);

        for (String string11 : stringList11) {
            System.out.println("string11: " + string11);
        }
   }

输出结果:

string11: 北京
string11: 上海
string11: 深圳
string11: 杭州
Json字符串 转 List<Integer>
    public static void main(String[] args) {
        //Json字符串 转 List<Integer>
        String json12 = "[1,2,3,4]";
        List<Integer> integerList12 = JSON.parseArray(json12, Integer.class);

        for (Integer integer12 : integerList12) {
            System.out.println("integer12: " + integer12);
        }
   }

输出结果:

integer12: 1
integer12: 2
integer12: 3
integer12: 4
Json字符串 转 Map<String, JavaBean>
    public static void main(String[] args) {
        //Json字符串 转 Map<String, JavaBean>
        String json13 = "{\"smsSend1\":{\"phone\":\"18812345001\",\"status\":\"SEND_SUCCESS\"},\"smsSend2\":{\"phone\":\"18812345002\",\"status\":\"SEND_SUCCESS\"},\"smsSend3\":{\"phone\":\"18812345003\",\"status\":\"SEND_SUCCESS\"}}";
        Map<String, SmsSend> map13 = JSON.parseObject(json13, Map.class);

        for (String key : map13.keySet()) {
            System.out.println("key: " + key + " , value: " + map13.get(key));
        }
   }

输出结果:

key: smsSend1 , value: {"phone":"18812345001","status":"SEND_SUCCESS"}
key: smsSend2 , value: {"phone":"18812345002","status":"SEND_SUCCESS"}
key: smsSend3 , value: {"phone":"18812345003","status":"SEND_SUCCESS"}
Json字符串 转 Map<String, String>
    public static void main(String[] args) {
        //Json字符串 转 Map<String, String>
        String json14 = "{\"浙江省会\":\"杭州\",\"湖南省会\":\"长沙\",\"江西省会\":\"南昌\"}";
        Map<String, String> map14 = JSON.parseObject(json14, Map.class);

        for (String key : map14.keySet()) {
            System.out.println("key: " + key + " , value: " + map14.get(key));
        }
   }

输出结果:

key: 浙江省会 , value: 杭州
key: 湖南省会 , value: 长沙
key: 江西省会 , value: 南昌
Json字符串 转 Map<String, Integer>
    public static void main(String[] args) {
        //Json字符串 转 Map<String, Integer>
        String json15 = "{\"数学\":97,\"语文\":90,\"英语\":95}";
        Map<String, Integer> map15 = JSON.parseObject(json15, Map.class);

        for (String key : map15.keySet()) {
            System.out.println("key: " + key + " , value: " + map15.get(key));
        }
   }

输出结果:

key: 数学 , value: 97
key: 语文 , value: 90
key: 英语 , value: 95
Json字符串 转 Map<String, Object>
    public static void main(String[] args) {
        //Json字符串 转 Map<String, Object>
        String json16 = "{\"浙江省会\":\"杭州\",\"湖南省会\":\"长沙\",\"江西省会\":\"南昌\"}";
        Map<String, Object> map16 = JSON.parseObject(json16, Map.class);

        for (String key : map16.keySet()) {
            System.out.println("key: " + key + " , value: " + map16.get(key));
        }
   }

输出结果:

key: 浙江省会 , value: 杭州
key: 湖南省会 , value: 长沙
key: 江西省会 , value: 南昌
Json字符串 转 List<Map<String,Object>>
    public static void main(String[] args) {
        //Json字符串 转 List<Map<String,Object>>
        String json17 = "[{\"浙江省会\":\"杭州\",\"湖南省会\":\"长沙\",\"江西省会\":\"南昌\"},{\"四川省会\":\"成都\",\"江苏省会\":\"南京\",\"安徽省会\":\"合肥\"}]";
        List<Map<String, Object>> list17 = JSON.parseObject(json17, new TypeReference<List<Map<String, Object>>>() {
        });

        for (Map<String, Object> map17 : list17) {
            for (String key : map17.keySet()) {
                System.out.println("key: " + key + " , value: " + map17.get(key));
            }
        }
   }

输出结果:

key: 浙江省会 , value: 杭州
key: 湖南省会 , value: 长沙
key: 江西省会 , value: 南昌
key: 四川省会 , value: 成都
key: 江苏省会 , value: 南京
key: 安徽省会 , value: 合肥
Json字符串 转 Map<String, List<JavaBean>>
    public static void main(String[] args) {
        //Json字符串 转 Map<String, List<JavaBean>>
        String json18 = "{\"smsSendList3\":[{\"phone\":\"18812345006\",\"status\":\"SEND_SUCCESS\"},{\"phone\":\"18812345007\",\"status\":\"SEND_SUCCESS\"}],\"smsSendList2\":[{\"phone\":\"18812345004\",\"status\":\"SEND_SUCCESS\"},{\"phone\":\"18812345005\",\"status\":\"SEND_SUCCESS\"}]}";
        Map<String, List<SmsSend>> map18 = JSON.parseObject(json18, new TypeReference<Map<String, List<SmsSend>>>() {
        });

        for (String key : map18.keySet()) {
            for (SmsSend smsSend18 : map18.get(key)) {
                System.out.println("key: " + key + " , value { " + "phone:" + smsSend18.getPhone() + " status:" + smsSend18.getStatus()+" }");
            }

        }
   }

输出结果:

key: smsSendList3 , value { phone:18812345006 status:SEND_SUCCESS }
key: smsSendList3 , value { phone:18812345007 status:SEND_SUCCESS }
key: smsSendList2 , value { phone:18812345004 status:SEND_SUCCESS }
key: smsSendList2 , value { phone:18812345005 status:SEND_SUCCESS }
Json字符串 转 List<Map<String, JavaBean>>
    public static void main(String[] args) {
        //Json字符串 转 List<Map<String, JavaBean>>
        String json22 = "[{\"smsSend20\":{\"phone\":\"18812345020\",\"status\":\"SEND_SUCCESS\"},\"smsSend19\":{\"phone\":\"18812345019\",\"status\":\"SEND_SUCCESS\"}},{\"smsSend22\":{\"phone\":\"18812345022\",\"status\":\"SEND_SUCCESS\"},\"smsSend21\":{\"phone\":\"18812345021\",\"status\":\"SEND_SUCCESS\"}}]";

        List<Map<String, SmsSend>> list22 = JSON.parseObject(json22, new TypeReference<List<Map<String, SmsSend>>>() {
        });

        for (Map<String, SmsSend> map22 : list22) {
            for (String key : map22.keySet()) {
                System.out.println("key: " + key + " , value { " + "phone:" + map22.get(key).getPhone() + " status:" + map22.get(key).getStatus() + " }");
            }
        }
   }

输出结果:

key: smsSend20 , value { phone:18812345020 status:SEND_SUCCESS }
key: smsSend19 , value { phone:18812345019 status:SEND_SUCCESS }
key: smsSend22 , value { phone:18812345022 status:SEND_SUCCESS }
key: smsSend21 , value { phone:18812345021 status:SEND_SUCCESS }
Json字符串 转 List<Map<String, List<JavaBean>>>
    public static void main(String[] args) {

        //Json字符串 转 List<Map<String, List<JavaBean>>>
        String json25="[{\"smsSend23\":[{\"phone\":\"18812345023\",\"status\":\"SEND_SUCCESS\"},{\"phone\":\"18812345024\",\"status\":\"SEND_SUCCESS\"}]},{\"smsSend24\":[{\"phone\":\"18812345025\",\"status\":\"SEND_SUCCESS\"},{\"phone\":\"18812345026\",\"status\":\"SEND_SUCCESS\"}]}]";

        List<Map<String, List<SmsSend>>> smsSendList28 = JSON.parseObject(json25, new TypeReference<List<Map<String, List<SmsSend>>>>() {
        });

        for (Map<String, List<SmsSend>> map28 : smsSendList28) {
            for (String key : map28.keySet()) {
                for (SmsSend smsSend28 : map28.get(key)) {
                    System.out.println("key: " + key + " , value { " + "phone:" + smsSend28.getPhone() + " status:" + smsSend28.getStatus() + " }");
                }
            }
        }
   }

输出结果:

key: smsSend23 , value { phone:18812345023 status:SEND_SUCCESS }
key: smsSend23 , value { phone:18812345024 status:SEND_SUCCESS }
key: smsSend24 , value { phone:18812345025 status:SEND_SUCCESS }
key: smsSend24 , value { phone:18812345026 status:SEND_SUCCESS }

总结

FastJson是非常不错的解析Json的框架,大家可以通过上面的示例对其有个大致的了解,更深入的使用需要根据实际情况来探索,笔者目前还未应用到。

这里再补充几个可能会用到的场景:

  • 集合对象转Json对象 如Map转Json对象
        JSONObject jsonObject = (JSONObject) JSONObject.toJSON(map);
  • 集合对象转Json数组 如List转Json数组
        JSONArray jsonArray = (JSONArray) JSONArray.toJSON(excepedList);

猜你喜欢

转载自blog.csdn.net/kuangay/article/details/81388919