中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用Gson將字符串轉換成JsonObject和JsonArray

發布時間:2022-02-07 15:00:45 來源:億速云 閱讀:1174 作者:iii 欄目:開發技術

本篇內容介紹了“如何使用Gson將字符串轉換成JsonObject和JsonArray”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

Gson將字符串轉JsonObject和JsonArray

以下均利用Gson來處理

1.將bean轉換成Json字符串:

public static String beanToJSONString(Object bean) {
        return new Gson().toJson(bean);
    }

2.將Json字符串轉換成對象:

public static Object JSONToObject(String json,Class beanClass) {
        Gson gson = new Gson();
        Object res = gson.fromJson(json, beanClass);
        return res;
    }

注:轉換后的對象使用前進行強轉:例如bean bean1 = (bean)FormatUtil.JSONToObject(json, bean.class);

3.將Json字符串轉換成JsonObject對象:

JsonObject returnData = new JsonParser().parse(jsonstr).getAsJsonObject();

4.將JsonArray類型的Json字符串解析成對象方法  

    Gson gson = new Gson(); 
    JsonParser parser = new JsonParser(); 
    JsonArray Jarray = parser.parse(jstring).getAsJsonArray(); 
 
    ArrayList<channelSearchEnum> lcs = new ArrayList<channelSearchEnum>(); 
 
    for(JsonElement obj : Jarray ){ 
        channelSearchEnum cse = gson.fromJson( obj , channelSearchEnum.class); 
        lcs.add(cse); 
    }

或者

String json = "[{\"username\":\"test\"},{\"username\":\"test2\"}]"; 
System.out.println(new JsonParser().parse(json).getAsJsonArray().get(0).getAsJsonObject().get("username").getAsString());

5.獲取JsonObject中指定key值對應的JsonArray對象:

String json= "{\"pids\":[\"1\",\"2\",\"3\"]}";
System.out.println(new JsonParser().parse(json).getAsJsonObject().getAsJsonArray("pids").get(0).getAsString());

JSONObject與JSON互轉

使用目的

目前數據交互大多以 JSON 字符串為信息傳輸,主要格式有

{"age":"22","name":"李四"}

[{"age":"21","name":"張三"}]

最常見的應用場景是前后端對接,第三方平臺文檔對接,下面展示轉換使用。

引入 jar , 此處引入 com.alibaba.fastjson 版本的jar包

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

建立測試類對象

class Student {
    private String name;
    private String age;
 
    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
 
    public String getAge() {
        return age;
    }
 
    public void setAge(String age) {
        this.age = age;
    } 
}

轉換

1、對象 轉 JSON

        Student stu1 = new Student();
        stu1.setName("張三");
        stu1.setAge("21");
        String stu1Json = JSONObject.toJSONString(stu1);

輸出:

{"age":"21","name":"張三"}

2、JSON 轉 對象

        Student stu1to = JSON.parseObject(stu1Json, Student.class);
        System.out.println("json 轉對象:");
        System.out.println(stu1to);
        System.out.println(stu1to.getName());
        System.out.println(stu1to.getAge());

輸出:

json 轉對象:
Student@2aae9190
張三
21

注:JSON鍵名要與對象屬性名相對應

3、對象數組 轉 JSON

        Student stu2 = new Student();
        stu2.setName("李四");
        stu2.setAge("22");
        List<Student> list = new ArrayList<Student>();
        list.add(stu1);
        list.add(stu2);
 
        String listJson = JSONObject.toJSONString(list);
        System.out.println(listJson);

輸出:

[{"age":"21","name":"張三"},{"age":"22","name":"李四"}]

4、JSON 轉 對象數組

        List<Student> studentList = JSON.parseArray(listJson, Student.class);
        for (Student student : studentList) {
            System.out.println(student.getName());
        }

輸出:

json 數組格式轉換對象
張三
李四

5、JSON多級組合,適用于請求文檔傳輸參數

        JSONObject jsona = new JSONObject();
        jsona.put("number", "1");
        JSONObject jsonb = new JSONObject();
        jsonb.put("listMap", list);
 
        JSONObject jsonAll = new JSONObject();
        jsonAll.put("jsona", jsona);
        jsonAll.put("jsonb", jsonb);
        String jsonAllStr =JSONObject.toJSONString(jsonAll);
        System.out.println(jsonAllStr);

輸出:

{"jsona":{"number":"1"},"jsonb":{"listMap":[{"age":"21","name":"張三"},{"age":"22","name":"李四"}]}}

6、多級 JSON 組合

6.1、只獲取指定字段,接上方示例代碼

String getJsona = JSON.parseObject(jsonAllStr).getString("jsona");
String strjsona = JSON.parseObject(getJsona, String.class); //指定獲取 字段名對象信息,如果為單個String可不指定,這里作為實例寫出
System.out.println("只拿jsona信息");
System.out.println(strjsona);

輸出:

只拿jsona信息
{"number":"1"}

6.2、獲取指定字段對象

    String getJsonb = JSON.parseObject(jsonAllStr).getString("jsonb");
    String getJsonbb = JSON.parseObject(getJsonb).getString("listMap");    //這里被二級包裹,所以要獲取2次才能轉換對象數組
    List<Student> strjsonb = JSON.parseArray(getJsonbb, Student.class);
    System.out.println("只拿jsonbb信息");
    System.out.println(strjsonb);

輸出:

只拿jsonbb信息
[Student@3d04a311, Student@7a46a697]

“如何使用Gson將字符串轉換成JsonObject和JsonArray”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

阿勒泰市| 崇义县| 于田县| 香河县| 抚顺县| 海城市| 中宁县| 团风县| 庐江县| 邮箱| 广东省| 东乡县| 察雅县| 浮山县| 山东| 大安市| 北京市| 青冈县| 贵溪市| 彝良县| 双柏县| 呈贡县| 宜章县| 苍梧县| 什邡市| 商城县| 嘉鱼县| 奉贤区| 泰宁县| 壶关县| 唐海县| 加查县| 启东市| 大埔区| 闽侯县| 新绛县| 辰溪县| 平遥县| 绿春县| 专栏| 嘉鱼县|