使用fastJSON进行json格式的转换

12,927次阅读
没有评论

共计 3349 个字符,预计需要花费 9 分钟才能阅读完成。

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

一、首先导入 maven 依赖:

        
            com.alibaba
            fastjson
            2.0.19
        

二、常用的一些方法

2.1 序列化

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

public static String toJSONString(Object object)

2.2 反序列化

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

public static  T parseObject(String text, Class clazz)

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

public static  List parseArray(String text, Class clazz)

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

public static  T parseObject(String text, TypeReference 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 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 list = new ArrayList();
        for (int i = 0; i  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> map = new HashMap();
        List hobbys = new ArrayList();
        hobbys.add("唱");
        hobbys.add("跳");
        hobbys.add("rap");
        hobbys.add("篮球");
        List 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 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> map = JSON.parseObject(jsonString, new TypeReference>>(){});
        for (String key: map.keySet()) {System.out.println(key +":--:"+map.get(key));
        }
//        爱好:--:[唱, 跳, rap, 篮球]
//        性别:--:[男, 女]
    }
 
 
 
 
 
}

原文地址: 使用 fastJSON 进行 json 格式的转换

    正文完
     0
    Yojack
    版权声明:本篇文章由 Yojack 于2024-10-23发表,共计3349字。
    转载说明:
    1 本网站名称:优杰开发笔记
    2 本站永久网址:https://yojack.cn
    3 本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长进行删除处理。
    4 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
    5 本站所有内容均可转载及分享, 但请注明出处
    6 我们始终尊重原创作者的版权,所有文章在发布时,均尽可能注明出处与作者。
    7 站长邮箱:laylwenl@gmail.com
    评论(没有评论)