使用fastJSON进行json格式的转换

前言:JSON在传输数据时,起到了特别大的作用,本文是采用的是com.alibaba.fastjson第三方包完成json格式的转换

一、首先导入maven依赖:

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

二、常用的一些方法

2.1 序列化

对象、集合序列化成json字符串

public static String toJSONString(Object object)

2.2 反序列化

json字符串反序列化成javabean对象或者类

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

json字符串反序列化成为List集合

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

json字符串反序列化成为Map集合:

public static <T> T parseObject(String text, TypeReference<T> type, Feature... features)

三、Demo演示

package com.hssy.newcustomer;
 
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import com.hssy.newcustomer.dto.fastjson.JsonDetailModule;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
 
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
 
@SpringBootTest
class NewcustomerApplicationTests {
 
    //测试Java对象进行json序列化成json字符串
    @Test
    void contextLoads() {
        JsonDetailModule module = new JsonDetailModule();
        module.setId(2);
        module.setName("张菲");
        List<String> hobbys = new ArrayList<>();
        hobbys.add("唱歌");
        hobbys.add("书法");
        hobbys.add("三国演绎");
        module.setHobby(hobbys);
        String jsonString = JSON.toJSONString(module);
        System.out.println(jsonString);
//        {"hobby":["唱歌","书法","三国演绎"],"id":2,"name":"张菲"}
    }
 
    //测试将List集合进行json序列化成json字符串
    @Test
    void testListToJson(){
        List<JsonDetailModule> list = new ArrayList<>();
        for (int i = 0; i < 2; i++) {
            JsonDetailModule module = new JsonDetailModule();
            module.setId(i);
            module.setName("用户:"+ i);
            List<String> hobbys = new ArrayList<>();
            hobbys.add("随机爱好:"+(char) (0x4e00 + (int) (Math.random() * (0x9fa5 - 0x4e00 + 1))));
            hobbys.add("随机爱好:"+(char) (0x4e00 + (int) (Math.random() * (0x9fa5 - 0x4e00 + 1))));
            module.setHobby(hobbys);
            list.add(module);
        }
        String jsonString = JSON.toJSONString(list);
        System.out.println(jsonString);
 
//        [{"hobby":["随机爱好:武","随机爱好:畧"],"id":0,"name":"用户:0"},{"hobby":["随机爱好:穊","随机爱好:丠"],"id":1,"name":"用户:1"}]
    }
 
    @Test
    void testMapToJson(){
        HashMap<String, List<String>> map = new HashMap<>();
        List<String> hobbys = new ArrayList<>();
        hobbys.add("唱");
        hobbys.add("跳");
        hobbys.add("rap");
        hobbys.add("篮球");
        List<String> genders = new ArrayList<>();
        genders.add("男");
        genders.add("女");
        map.put("爱好",hobbys);
        map.put("性别",genders);
        String jsonString = JSON.toJSONString(map);
        System.out.println(jsonString);
//        {"爱好":["唱","跳","rap","篮球"],"性别":["男","女"]}
    }
 
 
 
    //测试json字符串反序列化成Java对象
    @Test
    void testJsonToJava(){
        String jsonString = "{\"hobby\":[\"唱歌\",\"书法\",\"三国演绎\"],\"id\":2,\"name\":\"张菲\"}";
        JsonDetailModule jsonDetialModule = JSON.parseObject(jsonString, JsonDetailModule.class);
        System.out.println(jsonDetialModule);  //JsonDetailModule(id=2, name=张菲, hobby=[唱歌, 书法, 三国演绎])
    }
 
    @Test
    void testJsonToList(){
        String jsonString = " [{\"hobby\":[\"随机爱好:武\",\"随机爱好:畧\"],\"id\":0,\"name\":\"用户:0\"},{\"hobby\":[\"随机爱好:穊\",\"随机爱好:丠\"],\"id\":1,\"name\":\"用户:1\"}]";
        List<JsonDetailModule> jsonDetailModules = JSON.parseArray(jsonString, JsonDetailModule.class);
        System.out.println(jsonDetailModules);
//        [JsonDetailModule(id=0, name=用户:0, hobby=[随机爱好:武, 随机爱好:畧]), JsonDetailModule(id=1, name=用户:1, hobby=[随机爱好:穊, 随机爱好:丠])]
        for (JsonDetailModule item : jsonDetailModules) {
            System.out.println(item);
        }
//            JsonDetailModule(id=0, name=用户:0, hobby=[随机爱好:武, 随机爱好:畧])
//            JsonDetailModule(id=1, name=用户:1, hobby=[随机爱好:穊, 随机爱好:丠])
    }
 
    @Test
    void testJsonToMap(){
        String jsonString ="{\"爱好\":[\"唱\",\"跳\",\"rap\",\"篮球\"],\"性别\":[\"男\",\"女\"]}";
//        JSONObject jsonObject = JSON.parseObject(jsonString);
        //使用JSON.parseObject(jsonString)直接进行反序列化是没有泛型的,没有泛型是不安全的集合
        //我们要求转后的集合必须有泛型
        //因此,调用parseObject方法,还必须多穿一个TypeReference类型的参数,TypeReference类的泛型中,传递转换后的Map集合
        Map<String, List<String>> map = JSON.parseObject(jsonString, new TypeReference<Map<String, List<String>>>(){});
        for (String key: map.keySet()) {
            System.out.println(key +":--:"+map.get(key));
        }
//        爱好:--:[唱, 跳, rap, 篮球]
//        性别:--:[男, 女]
    }
 
 
 
 
 
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值