Jackson獲取某個子節點的值並將其轉化爲Java的對象數組

這裏的Json數據很複雜,裏面有好幾層,而且其中 的子節點是一個數組,在這裏,需要將數組內容封裝爲Java的數組對象;

Json的內容:

{
    "tbk_dg_item_coupon_get_response":{
        "results":{
            "tbk_coupon":[
                {
                    "category":30,
                    "commission_rate":"4.50",
                    "coupon_click_url":"https://uland.taobao.com/coupon/edetail?e=mvRTbq1mRRgGQASttHIRqSmyu6%2FFAp46K2mDI3Xo1qOm%2FPqYSC%2BIliwl%2FigqkipDNPA2g5q8zivnk2dtbU9Go84WClZRF4SZDfqEFBOhTcwivq3Qe%2FDWhlhjKEGhiJW%2F%2FU2y3Trg%2BkOLNl1jAFZkRoct90qKVfF%2Fe5e0UAAVK3J1CKi9CgX0znYefz8NXcoYTJnbK5InWzlFfSAQOJJoy9l4X1VWjKahEfvJS92kD%2FQeT0Is0vRKBg%3D%3D&traceId=0bb6412115567144691623131e",
                    "coupon_end_time":"2019-10-19",
                    "coupon_info":"滿99元減5元",
                    "coupon_remain_count":96244,
                    "coupon_start_time":"2019-04-20",
                    "coupon_total_count":100000,
                    "item_description":"",
                    "item_url":"https://detail.tmall.com/item.htm?id=578583724706",
                    "nick":"綠壩旗艦店",
                    "num_iid":578583724706,
                    "pict_url":"http://img.alicdn.com/tfscom/i2/1772094882/O1CN011lw03alMWll8Qfx_!!0-item_pic.jpg",
                    "seller_id":1772094882,
                    "shop_title":"綠壩旗艦店",
                    "small_images":{
                        "string":[
                            "http://img.alicdn.com/tfscom/i4/1772094882/O1CN011lw03bASZMMKjnP_!!1772094882.jpg",
                            "http://img.alicdn.com/tfscom/i3/1772094882/O1CN011lw03alHtMZprpH_!!1772094882.jpg",
                            "http://img.alicdn.com/tfscom/i2/1772094882/O1CN011lw03YtlI1PBiPs_!!1772094882.jpg",
                            "http://img.alicdn.com/tfscom/i1/1772094882/O1CN011lw03YtlQMyqd9N_!!1772094882.jpg"
                        ]
                    },
                    "title":"薄款夏季男士中國風休閒褲青年男裝大碼復古刺繡唐裝褲子古風漢服",
                    "user_type":1,
                    "volume":2061,
                    "zk_final_price":"118.00"
                },
                {
                    "category":30,
                    "commission_rate":"9.00",
                    "coupon_click_url":"https://uland.taobao.com/coupon/edetail?e=jwisihWspFgGQASttHIRqZKsG13Ar14Q6vrER49hOQreQisExutkDyuGL44CpqTVFiWxtqPQ1ZgNBMZQ6leL%2F4S9MP5xWr%2BQDfqEFBOhTcwivq3Qe%2FDWhlhjKEGhiJW%2F%2FU2y3Trg%2BkOLNl1jAFZkRoct90qKVfF%2Fe5e0UAAVK3J1CKi9CgX0znYefz8NXcoYTJnbK5InWzlFfSAQOJJoy9l4X1VWjKahEfvJS92kD%2FQeT0Is0vRKBg%3D%3D&traceId=0bb6412115567144691623131e",
                    "coupon_end_time":"2019-06-29",
                    "coupon_info":"滿89元減5元",
                    "coupon_remain_count":2000,
                    "coupon_start_time":"2019-04-30",
                    "coupon_total_count":2000,
                    "item_description":"",
                    "item_url":"https://detail.tmall.com/item.htm?id=593142975083",
                    "nick":"一米陽光傑1",
                    "num_iid":593142975083,
                    "pict_url":"http://img.alicdn.com/tfscom/i1/4277192882/O1CN01wxNrBa1X9zyyXLDqB_!!4277192882.jpg",
                    "seller_id":4277192882,
                    "shop_title":"潮男潮風尚",
                    "title":"薄款夏季男士中國風休閒褲青年男裝大碼復古刺繡唐裝褲子古風漢服",
                    "user_type":0,
                    "volume":0,
                    "zk_final_price":"118.00"
                },
                {
                    "category":30,
                    "commission_rate":"7.20",
                    "coupon_click_url":"https://uland.taobao.com/coupon/edetail?e=z%2BfHmMonWRcGQASttHIRqcGqhSQqtgLm1xla088eb2MYXB958FVfbD%2BVzPUxKDG45r%2FBOTBiLAVH3G1BtpdncInK7KbZMGoPDfqEFBOhTcwivq3Qe%2FDWhlhjKEGhiJW%2F%2FU2y3Trg%2BkOLNl1jAFZkRoct90qKVfF%2Fe5e0UAAVK3J1CKi9CgX0znYefz8NXcoYTJnbK5InWzlFfSAQOJJoy9l4X1VWjKahEfvJS92kD%2FQeT0Is0vRKBg%3D%3D&traceId=0bb6412115567144691623131e",
                    "coupon_end_time":"2019-06-29",
                    "coupon_info":"滿109元減10元",
                    "coupon_remain_count":1999,
                    "coupon_start_time":"2019-04-30",
                    "coupon_total_count":2000,
                    "item_description":"",
                    "item_url":"https://detail.tmall.com/item.htm?id=593071698112",
                    "nick":"lifevc",
                    "num_iid":593071698112,
                    "pict_url":"http://img.alicdn.com/tfscom/i3/3956965864/O1CN01pGCJk11tBl3FUcFfU_!!3956965864.jpg",
                    "seller_id":3956965864,
                    "shop_title":"恆利潮流服飾企業店",
                    "title":"薄款夏季男士中國風休閒褲青年男裝大碼復古刺繡唐裝褲子古風漢服",
                    "user_type":0,
                    "volume":0,
                    "zk_final_price":"118.00"
                },
                {
                    "category":30,
                    "commission_rate":"4.50",
                    "coupon_click_url":"https://uland.taobao.com/coupon/edetail?e=BAludN7PEDoGQASttHIRqemDRwDCDkX9KNBznuI0%2BvHSJ8DRB%2BFABcJBYZjy0fDkejXxhMaJsVwMMRKLA%2Fk90fWKnxDp2f%2FBDfqEFBOhTcwivq3Qe%2FDWhlhjKEGhiJW%2F%2FU2y3Trg%2BkOLNl1jAFZkRoct90qKVfF%2Fe5e0UAAVK3J1CKi9CgX0znYefz8NXcoYTJnbK5InWzlFfSAQOJJoy9l4X1VWjKahEfvJS92kD%2FQeT0Is0vRKBg%3D%3D&traceId=0bb6412115567144691623131e",
                    "coupon_end_time":"2019-06-29",
                    "coupon_info":"滿79元減10元",
                    "coupon_remain_count":99999,
                    "coupon_start_time":"2019-04-30",
                    "coupon_total_count":100000,
                    "item_description":"",
                    "item_url":"https://detail.tmall.com/item.htm?id=592794173003",
                    "nick":"tb59059817",
                    "num_iid":592794173003,
                    "pict_url":"http://img.alicdn.com/tfscom/i3/3819697421/O1CN01wM4A0a24grj0vXmND_!!3819697421.jpg",
                    "seller_id":3819697421,
                    "shop_title":"酷依依》》",
                    "title":"薄款夏季男士中國風休閒褲青年男裝大碼復古刺繡唐裝褲子古風漢服",
                    "user_type":0,
                    "volume":0,
                    "zk_final_price":"118.00"
                },
                {
                    "category":30,
                    "commission_rate":"4.50",
                    "coupon_click_url":"https://uland.taobao.com/coupon/edetail?e=yI%2FH2kky0HcGQASttHIRqe07cvNNUf7IuLSjFsjwvzcYXB958FVfbO8ymWLu7Mlgn23gbM10w%2BKfKQJ4v8OCoFEBumlf%2BHCVDfqEFBOhTcwivq3Qe%2FDWhlhjKEGhiJW%2F%2FU2y3Trg%2BkOLNl1jAFZkRoct90qKVfF%2Fe5e0UAAVK3J1CKi9CgX0znYefz8NXcoYTJnbK5InWzlFfSAQOJJoy9l4X1VWjKahEfvJS92kD%2FQeT0Is0vRKBg%3D%3D&traceId=0bb6412115567144691623131e",
                    "coupon_end_time":"2019-06-29",
                    "coupon_info":"滿79元減10元",
                    "coupon_remain_count":99977,
                    "coupon_start_time":"2019-04-30",
                    "coupon_total_count":100000,
                    "item_description":"",
                    "item_url":"https://detail.tmall.com/item.htm?id=592850441549",
                    "nick":"二琳很酷啊∫",
                    "num_iid":592850441549,
                    "pict_url":"http://img.alicdn.com/tfscom/i1/3694884544/O1CN01QeWeMF1jRCFC3DWwo_!!3694884544.jpg",
                    "seller_id":3694884544,
                    "shop_title":"u[3694884544]",
                    "title":"薄款夏季男士中國風休閒褲青年男裝大碼復古刺繡唐裝褲子古風漢服",
                    "user_type":0,
                    "volume":0,
                    "zk_final_price":"118.00"
                }
            ]
        },
        "total_results":100,
        "request_id":"9vg6xcxdlk1n"
    }
}

在這裏需要獲得tbk_coupon節點中的所有值,也就是取得其中的數組,並將其封裝爲數組的 對象:

這裏的JavaBean爲:

public class ResProduct implements Serializable {
    //優惠券的地址
    private String coupon_click_url;
    //    圖片的地址
    private String pict_url;
    //    店鋪的名稱
    private String shop_title;
    //    用券後的價格
    private String zk_final_price;
    //優惠券的面額
    private String coupon_info;

    @Override
    public String toString() {
        return "ResProduct{" +
                "coupon_click_url='" + coupon_click_url + '\'' +
                ", pict_url='" + pict_url + '\'' +
                ", shop_title='" + shop_title + '\'' +
                ", zk_final_price='" + zk_final_price + '\'' +
                ", coupon_info='" + coupon_info + '\'' +
                '}';
    }

    public String getCoupon_click_url() {
        return coupon_click_url;
    }

    public void setCoupon_click_url(String coupon_click_url) {
        this.coupon_click_url = coupon_click_url;
    }

    public String getPict_url() {
        return pict_url;
    }

    public void setPict_url(String pict_url) {
        this.pict_url = pict_url;
    }

    public String getShop_title() {
        return shop_title;
    }

    public void setShop_title(String shop_title) {
        this.shop_title = shop_title;
    }

    public String getZk_final_price() {
        return zk_final_price;
    }

    public void setZk_final_price(String zk_final_price) {
        this.zk_final_price = zk_final_price;
    }

    public String getCoupon_info() {
        return coupon_info;
    }

    public void setCoupon_info(String coupon_info) {
        this.coupon_info = coupon_info;
    }
}

由於我只要其中的一般分的值,所以在類的上加上註解:@JsonIgnoreProperties(ignoreUnknown = true)表示遇到沒有的內容直接跳過就好。如果沒有的話就會報錯。

所以核心代碼爲:

ObjectMapper mapper = new ObjectMapper();
String nodeName = "tbk_coupon";
        //讀取json的數據轉化爲節點對象
        JsonNode node = mapper.readTree(json);
//        從節點讀取數組中的位值
        JsonNode value = node.findValue(nodeName);
       //將json的數組轉化爲對象數組
        List<ResProduct> lendReco = mapper.readValue(value.toString(),new TypeReference<List<ResProduct>>() { });
        for (ResProduct p:
             lendReco) {
            System.out.println("lendReco = " + p);
        }

然後Success

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章