zoukankan      html  css  js  c++  java
  • 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);
      }
    }
    

      

  • 相关阅读:
    some things
    关于我的兼职创业历程
    慢牛APP相关截图
    慢牛系列五:用百度语音识别添加自选股
    慢牛系列四:好玩的React Native
    慢牛系列三:React Native实践
    慢牛系列二:前端技术选择
    慢牛系列一:如何抓取股票数据
    会写程序的屌丝是潜力股
    慢牛股票-基于Sencha+Cordova的股票类APP
  • 原文地址:https://www.cnblogs.com/lasdaybg/p/15144350.html
Copyright © 2011-2022 走看看