一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Java JSONObject與JSONArray對象案例詳解

Java JSONObject與JSONArray對象案例詳解

2021-12-13 13:33風的形狀 Java教程

這篇文章主要介紹了Java JSONObject與JSONArray對象案例詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下

JSONObject與JSONArray

最近在學習過程中用到了稍微復雜點的json數據需要將json數據解析出來,這里就截取一部分作為例子

1.JSONObject介紹

JSONObject-lib包是一個beans,collections,maps,java arrays和xml和JSON互相轉換的包。

2.下載jar包

*或者在Maven的pom.xml文件中直接配置如下:

?
1
2
3
4
5
6
<dependency>
            <groupId>net.sf.json-lib</groupId>
            <artifactId>json-lib</artifactId>
            <version>2.4</version>
            <classifier>jdk15</classifier>
</dependency>

json數據:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
{
    "cartypes":[
        {"id":1,"imgUrl":"img/l.jpg","bigimg": "img/d.jpg","title":"別克威朗","marketprice":"15.29","periods":"12",
           "endrepayone":"96800","endrepaytwo":"96800","endrepaythree":"93000",
           "endmonthone":"3408","endmonthtwo":"3408","endmonththree":"3278",
           "repayfirst":"15290","repaytwo":"22935", "repaythree":"30580",
           "monthrepayone":"3578","monthrepaytwo":"2878","monthrepaythree":"2478",
           "cardetails":            [{
             "imageId00": "img/first-bkwl.jpg",
             "imageId01": "img/bkwl01.jpg",
             "imageId02": "img/bkwl02.jpg",
             "imageId03": "img/bkwl03.jpg",
             "imageId04": "img/bkwl04.jpg",
             "carname": "別克",
             "carmatter": "威朗",
             "carvolume":"1.5L",
             "sitnum":"5",
             "cargearbox":"6擋手自一體",
             "caremission":"國V",
             "carldone":"一體式座艙",
             "carldtwo":"絨面內飾",
             "carldthree":"全景天窗",
             "carldfour":"展翼型HID大燈"
           }]
         },
         {"id":2,"imgUrl":"img/l.jpg","bigimg": "img/d.jpg","title":"英菲尼迪","marketprice":"18.98","periods":"12",
           "endrepayone":"126800","endrepaytwo":"126800","endrepaythree":"126800",
           "endmonthone":"4458","endmonthtwo":"4458","endmonththree":"4458",
           "repayfirst":"18980","repaytwo":"28470", "repaythree":"37960",
           "monthrepayone":"2738","monthrepaytwo":"1878","monthrepaythree":"998",
           "cardetails":             [{             "imageId00": "img/first.jpg",
             "imageId01": "img/yfnd01.jpg",
             "imageId02": "img/yfnd02.jpg",
             "imageId03": "img/yfnd03.jpg",
             "imageId04": "img/yfnd04.jpg",
             "carname": "英菲尼迪",
             "carmatter": "ESQ",
             "carvolume":"1.6L",
             "sitnum":"5",
             "cargearbox":"CVT無級變速",
             "caremission":"國V",
             "carldone":"定制輪轂",
             "carldtwo":"多功能方向盤",
             "carldthree":"LED尾燈",
             "carldfour":"真皮座椅"
           }]         }    ]
}
當接受到的是上面的json數據時,要獲取到里面的鍵對應的值應該怎樣做呢,比如要獲取title的值,獲取cardetails中的imageId02的值等。

面對這樣數組與對象相互嵌套的情況需要一步步將數據拆分,主要思想還是根據鍵取值,對于數組類型還是需要先根據”下標”取出元素。這里還需要用到JSONObject與JSONArray。

將上面的json數據簡化就是:(這里保留個id便于識別)

?
1
2
3
4
5
6
7
8
{
    "cartypes":[
              {
                 "id":1,"bigimg": "img/dt-bkwl.jpg",
                 "cardetails": [{ "imageId02": "img/bkwl02.jpg}]
               }               {          "id":2,"bigimg": "img/xxx.jpg",          "cardetails":[{"imageId002":"img/xx.jpg"}]               }             
     ]
}

這就是簡化了的json數據,可以看出這個串最外層是一個大的鍵為cartypes的對象,而它的值是json數組形式的比較復雜的json數據。繼續分析 [ ]的部分,可以看到,里面有兩個數組元素,每個元素分別是被{ }包起來的json對象,他們的元素組成相同,再看每個元素里面包含幾個鍵值對的數據,其中鍵cardetails的值又是一個嵌套的json數組,里面包含一個json對象。分析完畢。那該怎樣才能(拿到數據)解析呢?

 使用JSONObject與JSONArray

一般取數據有兩種方式,看需要選擇。

方式①:

通過 JSONObject.getString("鍵")直接獲取,這種方式只能每次獲取一個。

 方式②

通過構建與json對象相應的bean來獲取。

我在寫上面的例子時用到了兩種方式,由于需要使用到 id,bigimg以及cardetails中的大部分數據,因此我在使用時將cardetails封裝成一個bean,方便使用,而其他用到的比較少,因此就直接根據鍵獲取值。

另外需要注意的是,JSONObject,JSONArray分別對應的是json數據的兩種格式。即{"張三" : "男"}  , [{ 張三" : " 男" }] ,使用時需要將其轉換成對應的對象。

如(示例):

?
1
2
JSONObject jsonObject = JSONObject.fromObject(json);   //將json字符串轉換為JSONObject
JSONArray jsonArray = JSONArray.fromObject(json);  //將json字符串轉換為JSONArray

還有一點需要指出:在取鍵值是始終需要根據鍵取值,從外到內,取內層的鍵的值需要先獲取外層鍵的值,如果跨越取值會報錯。

下面演示取值:

?
1
2
3
4
5
6
JSONObject jsonObject = JSONObject.fromObject(json);   //將json字符串轉化為JSONObject
String cartypes=jsonObject.getString("cartypes");      //通過getString("cartypes")取出里面的信息
JSONArray jsonArray = JSONArray.fromObject(cartypes);  //將取到的cartypes對應的(一組)值字符串轉換為JSONArray
String id= job.getString("id");             //取id
String bigImg = job.getString("bigimg");    //大圖
System.out.println("bigImg:"+bigImg);       //可以顯示已經拿到bigimg的值

由于cardetails下的基本都是需要的值,一個一個取值比較麻煩,因此將cardetails封裝成一個bean  如下:

Cardetails.java

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class Cardetails {
    private String imageId00;
    private String imageId01;
    private String imageId02;
    private String imageId03;
    private String imageId04;
    private String carname;
    private String carmatter;
    private String carvolume;
    private int sitnum;
    private String cargearbox;
    private String  caremission;
    private String carldone;
    private String carldtwo;
    private String carldthree;
    private String carldfour;
    //get set 方法以及toString方法略
}

到這里,需要將cardetails中的鍵全轉成Cardetails中的屬性,方法如下:

?
1
2
3
4
5
//將cardetail封裝成bean
JSONArray carDetailArr=job.getJSONArray("cardetails");//將json字符串轉化為JSONArray
JSONObject carDetailObj = carDetailArr.getJSONObject(0);//獲取數組第一個元素
Cardetails cardetails = (Cardetails) JSONObject.toBean(carDetailObj, Cardetails.class);//封裝成bean
System.out.println("cardetails:"+cardetails); //能獲取到數據

最后附上部分代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
public void getICarDetail(int id){
        String json=null;
        try {
             json=iCarDetail.getICarDetail(id);//這里既是獲取上面json數據
        } catch (Exception e) {
            e.printStackTrace();
        }
        int jsonId=0;//json數組里的id值
        JSONObject jsonObject = JSONObject.fromObject(json);   //將json字符串轉化為JSONObject
        String cartypes=jsonObject.getString("cartypes");//通過getString("cartypes")取出里面的信息
        JSONArray jsonArray = JSONArray.fromObject(cartypes);  //將取到的cartypes對應的(一組)值字符串轉換為JSONArray
        //遍歷jsonarray 數組
        if(jsonArray.size()>0){
            for(int i=0;i<jsonArray.size();i++){
                JSONObject job = jsonArray.getJSONObject(i);//把每一個對象轉成json對象
                jsonId=(int)job.get("id"); //得到每個對象中的id值
                if(jsonId==id){
                    //獲取相關值
                    String id="codetool">

到此這篇關于Java JSONObject與JSONArray對象案例詳解的文章就介紹到這了,更多相關Java JSONObject與JSONArray對象內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://www.cnblogs.com/jhcai/p/7910350.html

延伸 · 閱讀

精彩推薦
  • Java教程升級IDEA后Lombok不能使用的解決方法

    升級IDEA后Lombok不能使用的解決方法

    最近看到提示IDEA提示升級,尋思已經有好久沒有升過級了。升級完畢重啟之后,突然發現好多錯誤,本文就來介紹一下如何解決,感興趣的可以了解一下...

    程序猿DD9332021-10-08
  • Java教程xml與Java對象的轉換詳解

    xml與Java對象的轉換詳解

    這篇文章主要介紹了xml與Java對象的轉換詳解的相關資料,需要的朋友可以參考下...

    Java教程網2942020-09-17
  • Java教程20個非常實用的Java程序代碼片段

    20個非常實用的Java程序代碼片段

    這篇文章主要為大家分享了20個非常實用的Java程序片段,對java開發項目有所幫助,感興趣的小伙伴們可以參考一下 ...

    lijiao5352020-04-06
  • Java教程Java使用SAX解析xml的示例

    Java使用SAX解析xml的示例

    這篇文章主要介紹了Java使用SAX解析xml的示例,幫助大家更好的理解和學習使用Java,感興趣的朋友可以了解下...

    大行者10067412021-08-30
  • Java教程小米推送Java代碼

    小米推送Java代碼

    今天小編就為大家分享一篇關于小米推送Java代碼,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧...

    富貴穩中求8032021-07-12
  • Java教程Java8中Stream使用的一個注意事項

    Java8中Stream使用的一個注意事項

    最近在工作中發現了對于集合操作轉換的神器,java8新特性 stream,但在使用中遇到了一個非常重要的注意點,所以這篇文章主要給大家介紹了關于Java8中S...

    阿杜7482021-02-04
  • Java教程Java實現搶紅包功能

    Java實現搶紅包功能

    這篇文章主要為大家詳細介紹了Java實現搶紅包功能,采用多線程模擬多人同時搶紅包,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙...

    littleschemer13532021-05-16
  • Java教程Java BufferWriter寫文件寫不進去或缺失數據的解決

    Java BufferWriter寫文件寫不進去或缺失數據的解決

    這篇文章主要介紹了Java BufferWriter寫文件寫不進去或缺失數據的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望...

    spcoder14552021-10-18
主站蜘蛛池模板: 非洲黑人xxxxxbbbbb | 亚洲一卡2卡三卡4卡5卡组 | 亚洲国产精品ⅴa在线观看 亚洲国产高清一区二区三区 | 无套日出白浆在线播放 | 久9青青cao精品视频在线 | 91进入蜜桃臀在线播放 | 高清一级片 | 亚洲福利天堂网福利在线观看 | 国产成人精品一区二三区2022 | 69欧美另类xxxxx高清 | 天堂在线观看中文字幕 | 久久青青草视频在线观 | 太深了 太粗h1v1 | 亚洲国产区男人本色在线观看欧美 | 18日本人| 国产伊人网 | 欧美人做人爱a全程免费 | 啊啊啊好大在线观看 | 五月激激激综合网色播免费 | 香蕉在线精品亚洲第一区 | 小妇人电影免费完整观看2021 | 国产福利不卡视频 | 久久99亚洲热最新地址获取 | 俄罗斯男男激情1069gay | 成人免费视频一区二区三区 | 久久精品免视看国产 | 亚洲AV久久久久久久无码 | 日韩激情视频在线观看 | 免费一区 | free嫩白的12sex性自由 | 免费看国产一级片 | 日韩日日操 | 窝窝影院午夜色在线视频 | 亚洲六月丁香六月婷婷色伊人 | 国产亚洲精品综合在线网址 | 精品国产乱码久久久久久人妻 | 俄罗斯处女| 精品在线免费观看 | 日本aaaaa高清免费看 | xxxxx性13一14 | 深夜视频免费看 |
<abbr id="m00im"></abbr>
    • <li id="m00im"></li>
      <nav id="m00im"><dl id="m00im"></dl></nav>
      <rt id="m00im"><pre id="m00im"></pre></rt>
      <rt id="m00im"><tr id="m00im"></tr></rt>