最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java對于JSON的解析方法舉例詳解

 更新時間:2023年09月22日 08:21:15   作者:.ONEPIECE.  
在編寫應用時,我們經(jīng)常要解析JSON,下面這篇文章主要給大家介紹了關于java對于JSON的解析方法,文中通過代碼示例介紹的非常詳細,需要的朋友可以參考下

1、數(shù)據(jù)類型

1.1、JSONObject

JSONObject是一種在Java中表示JSON對象的數(shù)據(jù)結(jié)構(gòu)。它是一個無序的鍵值對集合,用花括號({})包圍,并且每個鍵值對由冒號(:)分隔。

在Java中使用JSONObject,通常需要使用JSON庫(如Jackson、Gson等)進行解析和操作。以下是一些常見的JSONObject操作:

  • 創(chuàng)建JSONObject:

    JSONObject jsonObject = new JSONObject();
  • 添加鍵值對到JSONObject:

    jsonObject.put("key1", "value1");
    jsonObject.put("key2", 123);
    jsonObject.put("key3", true);
    // 可以添加其他JSONObject或JSONArray作為值
  • 獲取JSONObject中指定鍵的值:

    Object value = jsonObject.get("key");
  • 獲取JSONObject中所有鍵的集合:

    Set<String> keys = jsonObject.keySet();
  • 遍歷JSONObject中的所有鍵值對:

    for (String key : jsonObject.keySet()) {
        Object value = jsonObject.get(key);
        // 處理每個鍵值對
    }
  • 將JSONObject轉(zhuǎn)換為字符串:

    String jsonString = jsonObject.toJSONString();
  • 解析JSON字符串為JSONObject(使用JSON庫的相關方法):

    JSONObject jsonObject = JSON.parseObject(jsonString); // 示例使用JSON.simple庫

需要注意的是,具體的操作方式和方法名稱可能會因使用的JSON庫而有所不同。上述示例中的方法是基于JSON.simple庫進行說明的,其他庫可能會有自己的API。

通過JSONObject,您可以方便地處理和操作JSON對象數(shù)據(jù),在Java中實現(xiàn)與JSON對象的交互。

1.2、JSONArray

JSONArray是一種在Java中表示JSON數(shù)組的數(shù)據(jù)結(jié)構(gòu)。它是在一對方括號([])內(nèi)包含零個或多個JSON值的有序集合。JSONArray可以包含不同類型的值,例如字符串、數(shù)字、布爾值、對象或其他數(shù)組。

在Java中使用JSONArray,通常需要使用JSON庫(如Jackson、Gson等)進行解析和操作。以下是一些常見的JSONArray操作:

  • 創(chuàng)建JSONArray:

    JSONArray jsonArray = new JSONArray();
  • 添加元素到JSONArray:

    jsonArray.add("value1");
    jsonArray.add(123);
    jsonArray.add(true);
    // 可以添加其他JSONArray或JSONObject作為元素
  • 獲取JSONArray的長度(元素個數(shù)):

    int length = jsonArray.size();
  • 獲取JSONArray中指定位置的元素:

    Object element = jsonArray.get(index);
  • 遍歷JSONArray中的所有元素:

    for (Object element : jsonArray) {
        // 處理每個元素
    }
  • 將JSONArray轉(zhuǎn)換為Java數(shù)組:

    Object[] array = jsonArray.toArray();
  • 將JSONArray轉(zhuǎn)換為字符串:

    String jsonString = jsonArray.toJSONString();
  • 解析JSON字符串為JSONArray(使用JSON庫的相關方法):

    JSONArray jsonArray = JSON.parseArray(jsonString); // 示例使用JSON.simple庫

需要注意的是,具體的操作方式和方法名稱可能會因使用的JSON庫而有所不同。上述示例中的方法是基于JSON.simple庫進行說明的,其他庫可能會有自己的API。

通過JSONArray,您可以方便地處理和操作JSON數(shù)組數(shù)據(jù),在Java中實現(xiàn)與JSON數(shù)組的交互。

1.3、ArrayList

ArrayList是Java中的一種動態(tài)數(shù)組(也稱為可變大小的數(shù)組),它實現(xiàn)了List接口。與傳統(tǒng)的靜態(tài)數(shù)組相比,ArrayList具有自動擴展和縮小容量的能力,可以根據(jù)需要動態(tài)地調(diào)整其大小。

以下是一些常見的ArrayList操作:

  • 創(chuàng)建ArrayList:

    ArrayList<String> list = new ArrayList<>(); // 創(chuàng)建一個存儲字符串的ArrayList
  • 添加元素到ArrayList:

    list.add("element1");
    list.add("element2");
    // 可以添加任意類型的對象到ArrayList
  • 獲取ArrayList中指定位置的元素:

    String element = list.get(index);
  • 修改ArrayList中指定位置的元素:

    list.set(index, "new element");
  • 刪除ArrayList中指定位置的元素:

    list.remove(index);
  • 刪除ArrayList中指定元素的第一個匹配項:

    list.remove("element");
  • 判斷ArrayList是否包含指定元素:

    boolean contains = list.contains("element");
  • 獲取ArrayList的大?。ò脑貍€數(shù)):

    int size = list.size();
  • 遍歷ArrayList中的所有元素:

    for (String element : list) {
        // 處理每個元素
    }
  • 將ArrayList轉(zhuǎn)換為數(shù)組:

    String[] array = list.toArray(new String[0]);

需要注意的是,ArrayList可以存儲任意類型的對象,而不限于基本數(shù)據(jù)類型。使用ArrayList時,您可以根據(jù)需要動態(tài)地添加、刪除和修改元素,提供了更靈活的數(shù)據(jù)存儲和操作方式。

2、java轉(zhuǎn)JSON

2.1、javaBean對象轉(zhuǎn)化為JSON串

public void javaBeanToJSON() {
        Person person = new Person(1001,"張三",20,"2002-07-18 12:20:34"); // 有參構(gòu)造函數(shù)(實體類)
        // JSON類有靜態(tài)方法直接調(diào)用可以將javaBean對象轉(zhuǎn)化為JSON串
        String jsonString = JSON.toJSONString(person,true);
        System.out.println(jsonString);
    }

結(jié)果

{
    "age":20,
    "birthday":"2002-07-18 12:20:34",
    "eid":1001,
    "username":"張三"
}

2.2、JavaBean對象的數(shù)組轉(zhuǎn)化成JSON數(shù)組

public  void arrayToJSON() {
        Person p1 = new Person(1001,"張三",20,"2002-07-18 12:20:34");
        Person p2 = new Person(1002,"張四",21,"2003-07-18 12:20:34");
        Person p3 = new Person(1003,"張五",22,"2004-07-18 12:20:34");
        Person[] persopns = {p1,p2,p3};
        // 數(shù)組轉(zhuǎn)化成JSON格式的數(shù)組
        String jsonString = JSON.toJSONString(persopns, true); // true  是否嚴格轉(zhuǎn)化成json數(shù)組
        System.out.println(jsonString);
    }

結(jié)果

[{
    "age":20,
    "birthday":"2002-07-18 12:20:34",
    "eid":1001,
    "username":"張三"
},{
    "age":21,
    "birthday":"2003-07-18 12:20:34",
    "eid":1002,
    "username":"張四"
},{
    "age":22,
    "birthday":"2004-07-18 12:20:34",
    "eid":1003,
    "username":"張五"
}]

2.3、List集合轉(zhuǎn)化成JSON格式

  public void listToJSON() {
        Person p1 = new Person(1001,"張三",20,"2002-07-18 12:20:34");
        Person p2 = new Person(1002,"張四",21,"2003-07-18 12:20:34");
        Person p3 = new Person(1003,"張五",22,"2004-07-18 12:20:34");
        List<Person> list = new ArrayList<Person>();
        list.add(p1);
        list.add(p2);
        list.add(p3);
//        Collections.addAll(list,p1,p2,p3);  // 一次性add
        String jsonString = JSON.toJSONString(list,true);
        System.out.println(jsonString);
    }

結(jié)果

[
    {
        "age":20,
        "birthday":"2002-07-18 12:20:34",
        "eid":1001,
        "username":"張三"
    },
    {
        "age":21,
        "birthday":"2003-07-18 12:20:34",
        "eid":1002,
        "username":"張四"
    },
    {
        "age":22,
        "birthday":"2004-07-18 12:20:34",
        "eid":1003,
        "username":"張五"
    }
]

3、JSON轉(zhuǎn)Java

2.1、JSON轉(zhuǎn)化為JAVA的Bean

    public void jsonToJavaBean() {
        String json = "{\"age\":20,\"birthday\":\"2002-07-18 12:20:34\",\"eid\":1001,\"username\":\"張三\"}";
        Person person = JSON.parseObject(json,Person.class); // Person.class 類的結(jié)構(gòu)信息
        System.out.println(person);
    }

結(jié)果

Person{eid=1001, username='張三', age=20, birthday='2002-07-18 12:20:34'}

3.2、JSON轉(zhuǎn)化為java集合

public void JSONToJavaList() {
        String json = "[{\"age\":20,\"birthday\":\"2002-07-18 12:20:34\",\"eid\":1001,\"username\":\"張三\"},{\"age\":21,\"birthday\":\"2003-07-18 12:20:34\",\"eid\":1002,\"username\":\"張四\"},{\"age\":22,\"birthday\":\"2004-07-18 12:20:34\",\"eid\":1003,\"username\":\"張五\"}]";
        List<Person> list = JSON.parseArray(json, Person.class);
        System.out.println(list);
    }

結(jié)果

[Person{eid=1001, username='張三', age=20, birthday='2002-07-18 12:20:34'}, 
 Person{eid=1002, username='張四', age=21, birthday='2003-07-18 12:20:34'}, 
 Person{eid=1003, username='張五', age=22, birthday='2004-07-18 12:20:34'}]

4、JSONObject與JSONArray

4.1、JSONArray

[
    {
        "key": "value",
        "key2": "value2"
    },
    {
        "key": "value",
        "key2": "value2"
    },
    {
        "key": "value",
        "key2": "value2"
    }
]

[
    {
        "key": "value"
    },
    {
        "key": "value"
    },
    {
        "key": "value"
    }
]

4.2 JSONObject

{
    "key": "value",
    "key2": "value2",
    "key3": "value3"
}

4.3、兩者的區(qū)別

  • 區(qū)別在于JSONObject是一個{}包裹起來的一個對象(Object),而JSONArray則是[]包裹起來的一個數(shù)組(Array),JSONArray由一個或者多個JSONObjec 組成,說白點就是一個是數(shù)組一個是對象或字符串

  • 兩者的區(qū)別就是JSONArray是數(shù)組,里面存著對象;JSONObect是對象,里面存的是字符串。通俗來說,JSONArray是運輸機,里面裝的是汽車,汽車里面坐的是人,而JSONObect是汽車,里面裝的是人。

  • JSONArray和JSONObject再使用時候的第一個最重要的區(qū)別就是: JSONArray是一個一個加進去的;
    JSONObject是一對一對加進去的;

  • JSONObject最外面用的是 { } ,JSONArray最外面用的是 [ ]

5、JSONArray與List互轉(zhuǎn)

5.1JSONArray轉(zhuǎn)List

5.1.1.JSONArray字符串轉(zhuǎn)List

//初始化JSONArray
JSONArray array=new JSONArray();
array.add(0,"a");
array.add(1,"b");
array.add(2,"c");
List<String> list = JSONObject.parseArray(array.toJSONString(),String.class);
System.out.println(list.toString());

結(jié)果:

[a, b, c]

5.1.2.JSONArray對象 轉(zhuǎn) List

//初始化JSONArray
JSONArray jsonArray = JSONArray.parseArray("[{\"name\":\"zhangsan\",\"age\":18},{\"name\":\"lisi\",\"age\":23}]");
//打印jsonArray
System.out.println(jsonArray.toJSONString());
//轉(zhuǎn)List
List<Body> list = JSONArray.parseArray(jsonArray.toJSONString(), Body.class);
//打印List<Body>
System.out.println(list.toString());

結(jié)果

[{“name”:“zhangsan”,“age”:18},{“name”:“lisi”,“age”:23}]
[Body{name=‘zhangsan’, age=18}, Body{name=‘lisi’, age=23}]

5.2 .List轉(zhuǎn)JSONArray

List<T> list = new ArrayList<T>();
JSONArray jsonArray = JSONArray.parseArray(JSON.toJSONString(list));

總結(jié) 

到此這篇關于java對于JSON的解析方法的文章就介紹到這了,更多相關java解析JSON內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Thread線程的基礎知識及常見疑惑點總結(jié)

    Thread線程的基礎知識及常見疑惑點總結(jié)

    在本篇內(nèi)容里小編給大家分享的是關于Thread線程的基礎知識及常見疑惑點,對此有學習需求的朋友們可以學習參考下。
    2019-05-05
  • 一篇文章帶你初步認識Maven

    一篇文章帶你初步認識Maven

    這篇文章主要為大家初步認識了Maven,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • spring如何集成cxf實現(xiàn)webservice接口功能詳解

    spring如何集成cxf實現(xiàn)webservice接口功能詳解

    這篇文章主要給大家介紹了關于spring如何集成cxf實現(xiàn)webservice接口功能的相關資料,文中通過示例代碼介紹的非常詳細,對大家 的學習或者工作具有一定的參考學習價值,需要的朋友們下面來一起看看吧
    2018-07-07
  • 詳解如何在SpringBoot項目中使用統(tǒng)一返回結(jié)果

    詳解如何在SpringBoot項目中使用統(tǒng)一返回結(jié)果

    在一個完整的項目中,如果每一個控制器的方法都返回不同的結(jié)果,那么對項目的維護和擴展都會很麻煩。因此,本文為大家準備了SpringBoot項目中使用統(tǒng)一返回結(jié)果的方法,需要的可以參考一下
    2022-10-10
  • IDEA+JRebel實現(xiàn)全自動熱部署的方法步驟

    IDEA+JRebel實現(xiàn)全自動熱部署的方法步驟

    這篇文章主要介紹了IDEA+JRebel實現(xiàn)全自動熱部署的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-11-11
  • 詳解Java線程池的增長過程

    詳解Java線程池的增長過程

    在本篇文章里小編給大家整理的是關于Java線程池的增長過程以及相關知識點,需要的朋友們可以參考下。
    2019-08-08
  • Spring三級緩存思想解決循環(huán)依賴總結(jié)分析

    Spring三級緩存思想解決循環(huán)依賴總結(jié)分析

    這篇文章主要為大家介紹了Spring三級緩存思想解決循環(huán)依賴總結(jié)分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-08-08
  • mybatisplus的坑?insert標簽insert?into?select無參數(shù)問題的解決

    mybatisplus的坑?insert標簽insert?into?select無參數(shù)問題的解決

    這篇文章主要介紹了mybatisplus的坑?insert標簽insert?into?select無參數(shù)問題的解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • Spring Cloud Alibaba 本地調(diào)試介紹及方案設計

    Spring Cloud Alibaba 本地調(diào)試介紹及方案設計

    為了解決 本地調(diào)試 的問題,本文實現(xiàn)了一種簡單實用的策略,可以通過 Nacos 動態(tài)配置服務路由,還可以基于用戶,部門,組織等級別配置服務路由,實現(xiàn) 本地調(diào)試 的同時,實際上也實現(xiàn) 灰度發(fā)布,感興趣的朋友跟隨小編一起看看吧
    2021-07-07
  • Java中@PathVariable 和 @RequestParam的區(qū)別小結(jié)

    Java中@PathVariable 和 @RequestParam的區(qū)別小結(jié)

    本文主要介紹了Java中@PathVariable 和 @RequestParam的區(qū)別小結(jié),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2026-02-02

最新評論

农安县| 南阳市| 资兴市| 白河县| 韩城市| 女性| 兴海县| 东阳市| 东宁县| 道真| 龙里县| 贺州市| 巴彦淖尔市| 岳阳县| 全椒县| 道真| 晋城| 焦作市| 乐山市| 黎城县| 西丰县| 田林县| 城固县| 元氏县| 探索| 逊克县| 丽水市| 炉霍县| 灌阳县| 宁明县| 弥勒县| 库车县| 麻江县| 黔江区| 当阳市| 资溪县| 吕梁市| 台南县| 息烽县| 信阳市| 临夏县|