欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用Gson將字符串轉(zhuǎn)換成JsonObject和JsonArray

 更新時(shí)間:2022年02月07日 10:04:11   作者:紫鈴之魂  
這篇文章主要介紹了使用Gson將字符串轉(zhuǎn)換成JsonObject和JsonArray,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

Gson將字符串轉(zhuǎn)JsonObject和JsonArray

以下均利用Gson來處理

1.將bean轉(zhuǎn)換成Json字符串:

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

2.將Json字符串轉(zhuǎn)換成對象:

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

注:轉(zhuǎn)換后的對象使用前進(jìn)行強(qiáng)轉(zhuǎn):例如bean bean1 = (bean)FormatUtil.JSONToObject(json, bean.class);

3.將Json字符串轉(zhuǎn)換成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值對應(yīng)的JsonArray對象:

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

JSONObject與JSON互轉(zhuǎn)

使用目的

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

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

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

最常見的應(yīng)用場景是前后端對接,第三方平臺文檔對接,下面展示轉(zhuǎn)換使用。

引入 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;
?? ?}?
}

轉(zhuǎn)換

1、對象 轉(zhuǎn) JSON

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

輸出:

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

2、JSON 轉(zhuǎn) 對象

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

輸出:

json 轉(zhuǎn)對象:
Student@2aae9190
張三
21

注:JSON鍵名要與對象屬性名相對應(yīng)

3、對象數(shù)組 轉(zhuǎn) 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 轉(zhuǎn) 對象數(shù)組

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

輸出:

json 數(shù)組格式轉(zhuǎn)換對象
張三
李四

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

? ? ? ? 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); //指定獲取 字段名對象信息,如果為單個(gè)String可不指定,這里作為實(shí)例寫出
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次才能轉(zhuǎn)換對象數(shù)組
?? ?List<Student> strjsonb = JSON.parseArray(getJsonbb, Student.class);
?? ?System.out.println("只拿jsonbb信息");
?? ?System.out.println(strjsonb);

輸出:

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

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • JAVA新手小白學(xué)正則表達(dá)式、包裝類、自動(dòng)裝箱/自動(dòng)拆箱以及BigDecimal

    JAVA新手小白學(xué)正則表達(dá)式、包裝類、自動(dòng)裝箱/自動(dòng)拆箱以及BigDecimal

    這篇文章主要給大家介紹了關(guān)于JAVA新手小白學(xué)正則表達(dá)式、包裝類、自動(dòng)裝箱/自動(dòng)拆箱以及BigDecimal的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2022-03-03
  • SpringBoot連接MYSQL數(shù)據(jù)庫并使用JPA進(jìn)行操作

    SpringBoot連接MYSQL數(shù)據(jù)庫并使用JPA進(jìn)行操作

    今天給大家介紹一下如何SpringBoot中連接Mysql數(shù)據(jù)庫,并使用JPA進(jìn)行數(shù)據(jù)庫的相關(guān)操作。
    2017-04-04
  • tk-mybatis 的使用方法詳解

    tk-mybatis 的使用方法詳解

    tkmybatis是在mybatis框架的基礎(chǔ)上提供了很多工具,本文就詳細(xì)的介紹了一下tk-mybatis 的使用方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • 關(guān)于Poi讀取Excel引發(fā)內(nèi)存溢出問題的解決方法

    關(guān)于Poi讀取Excel引發(fā)內(nèi)存溢出問題的解決方法

    這篇文章主要給大家介紹了關(guān)于Poi讀取Excel引發(fā)內(nèi)存溢出問題的解決方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-08-08
  • java修改JFrame默認(rèn)字體方式

    java修改JFrame默認(rèn)字體方式

    這篇文章主要介紹了java修改JFrame默認(rèn)字體方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • 使用Maven 搭建 Spring MVC 本地部署Tomcat的詳細(xì)教程

    使用Maven 搭建 Spring MVC 本地部署Tomcat的詳細(xì)教程

    這篇文章主要介紹了使用Maven 搭建 Spring MVC 本地部署Tomcat,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-08-08
  • 深入淺出分析Java 類和對象

    深入淺出分析Java 類和對象

    面向?qū)ο竽耸荍ava語言的核心,是程序設(shè)計(jì)的思想。Java語言的面向?qū)ο蠹夹g(shù)包括了面向?qū)ο蠛兔嫦蜻^程的基本概念,面向?qū)ο蟮奶卣鳎琂ava語言的類,對象,修飾符,抽象類等一系列的知識點(diǎn)
    2022-03-03
  • Java MultipartFile實(shí)現(xiàn)上傳文件/上傳圖片

    Java MultipartFile實(shí)現(xiàn)上傳文件/上傳圖片

    這篇文章主要介紹了Java MultipartFile實(shí)現(xiàn)上傳文件/上傳圖片,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下
    2020-12-12
  • Java如何利用CompletableFuture描述任務(wù)之間的關(guān)系

    Java如何利用CompletableFuture描述任務(wù)之間的關(guān)系

    Java如何根據(jù)線程的執(zhí)行結(jié)果執(zhí)行下一步動(dòng)作呢,F(xiàn)uture的另一個(gè)實(shí)現(xiàn)類CompletableFuture能夠優(yōu)雅的解決異步化問題,下面就跟隨小編一起了解一下吧
    2023-07-07
  • Java實(shí)現(xiàn)消息轟炸的方法 附帶源碼

    Java實(shí)現(xiàn)消息轟炸的方法 附帶源碼

    這篇文章主要介紹了Java實(shí)現(xiàn)消息轟炸的方法 附帶源碼,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-04-04

最新評論