JSON--04--fastjson

fastjson

Json概念:

  • Json是一种轻量级的数据交换格式,采用一种“键:值”对 的文本格式来存储和表示数据,在系统交换数据过程中常常被使用,是一种理想的数据交换语言。在使用Java做Web开发时,不可避免的会遇到Json的使用。

fastjson:

  • fastjson.jar是阿里巴巴开发的一款专门用于Java开发的包,可以方便的实现json对象与JavaBean对象的转换,实现JavaBean对象与json字符串的转换,实现json对象与json字符串的转换。

jar包:

下载地址:https://github.com/alibaba/fastjson

点击页面中的download即可下载最新的包

在这里插入图片描述

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

api:

对象 转成 ==> JSON字符串

String objJson = JSON.toJSONString(Object object);

JSON字符串 ==> 对象

User user1 = JSON.parseObject(userJson, User.class);

JSON对象 转成 ==> JSON字符串

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

com.alibaba.fastjson.JSON提供了许多方法(多态)实现序列化。
在这里插入图片描述

1.基本的序列化

String objJson = JSON.toJSONString(Object object);

2.将Map转成JSON字符串

 @Test
    public void test01() {
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("key1", "One");
        map.put("key2", "Two");
        String mapJson = JSON.toJSONString(map);

        System.out.println(mapJson);

    }

在这里插入图片描述

3.List< Map>转成JSON字符串

  @Test
    public void test01() {
        List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();

        Map<String, Object> map1 = new HashMap<String, Object>();
        map1.put("key1", "One");
        map1.put("key2", "Two");
        Map<String, Object> map2 = new HashMap<String, Object>();
        map2.put("key1", "Three");
        map2.put("key2", "Four");

        list.add(map1);
        list.add(map2);

        String listJson = JSON.toJSONString(list);

        System.out.println(listJson);

    }

在这里插入图片描述

4.自定义JavaBean User 转成JSON字符串

User 对象

public class User {

    public String UserName;
    public int Age;

    public User(String userName, int age) {
        UserName = userName;
        Age = age;
    }

    public User() {
    }

    public String getUserName() {
        return UserName;
    }

    public void setUserName(String userName) {
        UserName = userName;
    }

    public int getAge() {
        return Age;
    }

    public void setAge(int age) {
        Age = age;
    }

    @Override
    public String toString() {
        return "User{" +
                "UserName='" + UserName + '\'' +
                ", Age='" + Age + '\'' +
                '}';
    }
}


转化方法

   @Test
    public void test01() {
        User user = new User();
        user.setUserName("李四");
        user.setAge(24);

        String userJson = JSON.toJSONString(user);

        System.out.println(userJson);

    }

在这里插入图片描述

输出格式化后的 JSON 字符串

  • 传入一个对象和一个布尔类型(是否格式化),将对象转成格式化后的JSON字符串。
String objJson = JSON.toJSONString(Object object, boolean prettyFormat);
@Test
    public void test02() {
        List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();

        Map<String, Object> map1 = new HashMap<String, Object>();
        map1.put("key1", "One");
        map1.put("key2", "Two");
        Map<String, Object> map2 = new HashMap<String, Object>();
        map2.put("key1", "Three");
        map2.put("key2", "Four");

        list.add(map1);
        list.add(map2);

        String listJson = JSON.toJSONString(list, true);

        System.out.println(listJson);

    }

在这里插入图片描述
在这里插入图片描述

特性支持

FastJSON提供了许多特性支持

String objJson = JSON.toJSONString(Object object, SerializerFeature…features)

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

1.日期格式化:

  • FastJSON将java.util.Date转成long。
String dateJson = JSON.toJSONString(new Date());
     
System.out.println(dateJson);

输出结果:

1401370199040

2.使用SerializerFeature特性格式化日期。

String dateJson = JSON.toJSONString(new Date(), SerializerFeature.WriteDateUseDateFormat);
        
System.out.println(dateJson);

输出结果:

“2014-05-29 21:36:24”

3.指定输出日期格式。

String dateJson = JSON.toJSONStringWithDateFormat(new Date(), "yyyy-MM-dd HH:mm:ss.SSS");
         
System.out.println(dateJson);

输出结果:

“2014-05-29 21:47:00.154”

JSON字符串 ==>JSON对象

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

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

在这里插入图片描述

1. 指定Class信息转 JSON对象

  @Test
    public void test01() {
        User user = new User();
        user.setUserName("李四");
        user.setAge(24);
       // String userJson = JSON.toJSONString(user);
        //反序列化
        User user1 = JSON.parseObject(userJson, User.class);

        System.out.println(user1);

    }

在这里插入图片描述

2. 集合list 转 JSON对象

   List<Map> list1 = JSON.parseArray(listJson, Map.class);

        for (Map<String, Object> map : list1) {
            System.out.println(map.get("key1"));
            System.out.println(map.get("key2"));
        }

在这里插入图片描述

3. 泛型转 JSON对象 (使用TypeReference传入类型信息)

 @Test
    public void test03() {
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("key1", "One");
        map.put("key2", "Two");
        String mapJson = JSON.toJSONString(map);


        Map<String, Object> map1 = JSON.parseObject(mapJson, new TypeReference<Map<String, Object>>(){});
        System.out.println(map1.get("key1"));
        System.out.println(map1.get("key2"));

    }

在这里插入图片描述

JSONObject,JSONArray是JSON的两个子类。

在这里插入图片描述

JSONObject 相当于 Map<String, Object>,

JSONArray 相当于 List。

JSONObject 类应用案例:

 @Test
    public void test03() {
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("key1", "One");
        map.put("key2", "Two");

        JSONObject j = new JSONObject(map);

        j.put("key3", "Three");

        System.out.println(j.get("key1"));
        System.out.println(j.get("key2"));
        System.out.println(j.get("key3"));

    }

在这里插入图片描述

JSONArray 类应用案例:

    @Test
    public void test03() {
        List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();

        Map<String, Object> map = new HashMap<String, Object>();
        map.put("key1", "One");
        map.put("key2", "Two");

        Map<String, Object> map2 = new HashMap<String, Object>();
        map2.put("key1", "Three");
        map2.put("key2", "Four");

        list.add(map);
        list.add(map2);

        JSONArray j = JSONArray.parseArray(JSON.toJSONString(list));



        for (int i = 0; i < j.size(); i++) {
            System.out.println(j.get(i));
        }

    }

在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值