• fastjson的使用——JSON字符串、JSON对象、Java对象的互转


    一、fastjson简介

    fastjson是阿里出品的处理JSON字符串的Java类库,可以对JSON字符串、JSON对象、Java对象进行互相转换
    源码地址:
    https://github.com/alibaba/fastjson

    二、依赖引用

    如果使用的是maven,需要在pom.xml文件中加入依赖:
    <dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.78</version>
    </dependency>

    如果使用的是gradle,需要在gradle.build文件中加入依赖:
    implementation("com.alibaba:fastjson:1.2.78")

    三、常用API

    字符串转成JSON对象/数组
    字符串转成JSON对象
    JSON.parseObject(String text)
    JSON.parse(String text)

    字符串转成JSON数组
    JSON.parseArray(String text)
    JSON.parse(String text)


    字符串转成Java对象/列表
    字符串转成Java对象
    JSON.parseObject(String text, Class<T> clazz)

    字符串转成Java对象列表
    JSON.parseArray(String text, Class<T> clazz)


    Java对象/列表转成JSON对象/数组
    Java对象转成JSON对象
    JSONObject.toJSON(Object javaObject)
    JSON.toJSON(Object javaObject)

    Java对象列表转成JSON数组
    JSONArray.toJSON(Object javaObject)
    JSON.toJSON(Object javaObject)


    JSON对象/数组转成Java对象/列表
    JSON对象转成Java对象
    JSON.toJavaObject(JSON json, Class<T> clazz)
    jsonObject.toJavaObject(JSON json) (非静态方法)

    JSON数组转成Java对象列表
    jsonArray.toJavaList(Class<T> clazz) (非静态方法)

    用两张图可以看的更清楚:

    思维导图:

     

    转换图:

    四、示例代码

    import com.alibaba.fastjson.JSON;
    import com.alibaba.fastjson.JSONArray;
    import com.alibaba.fastjson.JSONObject;
    import java.util.List;
    
    public class FastJSONLearning {
      public static void main(String[] args) {
        String jsonObjectStr = "{"prop":"code","label":"代码","required":true,"key":true}";
        String jsonArrayStr = "[{"prop":"code","label":"代码","required":true,"key":true},{"prop":"explain","label":"中文释义","required":true}]";
    
        // 字符串转成JSON对象/数组
        // 字符串转成JSON对象
        // 方法1
        JSONObject jsonObject1 = JSON.parseObject(jsonObjectStr);
        System.out.println("字符串转成JSON对象: " + jsonObject1);
    
        // 方法2
        JSONObject jsonObject2 = (JSONObject) JSON.parse(jsonObjectStr);
        System.out.println("字符串转成JSON对象: " + jsonObject2);
    
        // 字符串转成JSON数组
        // 方法1
        JSONArray jsonArray1 = JSON.parseArray(jsonArrayStr);
        System.out.println("字符串转成JSON数组: " + jsonArray1);
    
        // 方法2
        JSONArray jsonArray2 = (JSONArray) JSON.parse(jsonArrayStr);
        System.out.println("字符串转成JSON数组: " + jsonArray2);
    
        // 字符串转成Java对象/列表
        // 字符串转成Java对象
        Dict dict = JSON.parseObject(jsonObjectStr, Dict.class);
        System.out.println("字符串转成Java对象: " + dict.toString());
    
        // 字符串转成Java对象列表
        List<Dict> dictList = JSON.parseArray(jsonArrayStr, Dict.class);
        System.out.println("字符串转成Java对象列表: " + dictList.toString());
    
        // Java对象/列表转成JSON对象/数组
        // Java对象转成JSON对象
        // 方法1
        JSONObject jsonObject3 = (JSONObject) JSONObject.toJSON(dict);
        System.out.println("Java对象转成JSON对象: " + jsonObject3.toJSONString());
    
        // 方法2
        JSONObject jsonObject4 = (JSONObject) JSON.toJSON(dict);
        System.out.println("Java对象转成JSON对象: " + jsonObject4.toJSONString());
    
        // Java对象列表转成JSON数组
        // 方法1
        JSONArray jsonArray3 = (JSONArray) JSONArray.toJSON(dictList);
        System.out.println("Java对象列表转成JSON数组: " + jsonArray3.toJSONString());
    
        // 方法2
        JSONArray jsonArray4 = (JSONArray) JSON.toJSON(dictList);
        System.out.println("Java对象列表转成JSON数组: " + jsonArray4.toJSONString());
    
        // JSON对象/数组转成Java对象/列表
        // JSON对象转成Java对象
        // 方法1
        Dict dict1 = JSON.toJavaObject(jsonObject1, Dict.class);
        System.out.println("JSON对象转成Java对象: " + dict1);
    
        // JSON对象转成Java对象
        // 方法2
        Dict dict2 = jsonObject1.toJavaObject(Dict.class);
        System.out.println("JSON对象转成Java对象: " + dict2);
    
        // JSON数组转成Java对象列表
        List<Dict> dictList1 = jsonArray1.toJavaList(Dict.class);
        System.out.println("JSON数组转成Java对象列表: " + dictList1);
      }
    }
    

      

  • 相关阅读:
    原生js螺旋运动
    拉美电子游戏市场创收45亿美元
    ZOJ 3229 Shoot the Bullet
    Java的压缩、解压及压缩加密、解密解压 样例
    java环境变量配置
    git在myelispse中的安装
    java注解
    Python测试框架doctest
    python中的协程
    Flask log配置,实现按照日期自动生成日志文件
  • 原文地址:https://www.cnblogs.com/lasdaybg/p/15144350.html
Copyright © 2020-2023  润新知