第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何從gson獲取嵌套數(shù)據(jù)?

如何從gson獲取嵌套數(shù)據(jù)?

慕哥9229398 2023-05-17 15:45:15
我向外部 RESTful api 發(fā)出了一個 get 請求,并收到一個具有此結(jié)構(gòu)的 json 對象作為響應(yīng):{    "data": {       "id": 1,       "name": "John Doe",       "email": "doe@john.com",       "urlPicture": "urlPicture.com/82819",       "address": {          "street": "My street",          "number": "29",          "city": "Nurnberg",          "country": "Germany"       }    }}我不需要此響應(yīng)的所有內(nèi)容,我只想將一些字段保存在數(shù)據(jù)庫中。我的 POJO 類類似于此偽代碼:    public class Data{        private User user;        // getters and setters    }    public class User{        private int id;        private String name;        private String urlPicture;        private String country;        // getters and setters    }但是,當(dāng)我嘗試提取我想要的字段時,我在這個字段中收到 null    public void testResponse(){        RestTemplate restTemplate = new RestTemplate();        Data data = new Data();        User user = new User();        Gson gson = new Gson();        String response = restTemplate.getForObject(                    "https://apifrommyrequest.com/user/{id}",                    String.class,                    73442);        user = gson.fromJson(response, User.class);        System.out.println(user);    }    ```My output:22:20:57.641 [main] DEBUG org.springframework.web.client.RestTemplate - HTTP GET https://apifrommyrequest.com/user/7344222:20:57.672 [main] DEBUG org.springframework.web.client.RestTemplate - Accept=[text/plain, application/json, application/*+json, */*]22:20:58.243 [main] DEBUG org.springframework.web.client.RestTemplate - Response 200 OK22:20:58.247 [main] DEBUG org.springframework.web.client.RestTemplate - Reading to [java.lang.String] as "application/json;charset=UTF-8"Data(id=0, name=null, urlPicture=null, country=null)I really don't know how to do anymore.
查看完整描述

3 回答

?
蠱毒傳說

TA貢獻1895條經(jīng)驗 獲得超3個贊

試試下面的代碼。您不能直接訪問國家/地區(qū),它是放置在嵌套對象中的值。而且由于響應(yīng)主體作為數(shù)據(jù)返回,因此您無法將其轉(zhuǎn)換為用戶對象。首先,您需要將其轉(zhuǎn)換為數(shù)據(jù)對象。


public class User {

    private int id;

    private String name;

    private String urlPicture;

    private Address address;


    // getters and setters

}


public class Address {

    private String country;


    // getters and setters

}


public void testResponse(){

    RestTemplate restTemplate = new RestTemplate();

    Data data = new Data();

    User user = new User();

    Gson gson = new Gson();


    String response = restTemplate.getForObject(

                "https://apifrommyrequest.com/user/{id}",

                String.class,

                73442);

    data = gson.fromJson(response, Data.class);


    System.out.println(data);

}


查看完整回答
反對 回復(fù) 2023-05-17
?
明月笑刀無情

TA貢獻1828條經(jīng)驗 獲得超4個贊

如果你愿意,你也可以像這樣設(shè)計你的 POJO(以減少嵌套的 POJO):


public class Data {

    private User data;


   //getters and setters

}


public class User {


    private int id;

    private String name;

    private String urlPicture;

    private String country;


    @JsonProperty("address")

    private void unpackNested(Map<String,String> elements)

    {

        this.country = elements.get("country");


    }

   //getters and setters

}

然后最后在 Data 類上反序列化


查看完整回答
反對 回復(fù) 2023-05-17
?
慕慕森

TA貢獻1856條經(jīng)驗 獲得超17個贊

你真的不需要做從字符串到對象的轉(zhuǎn)換,resttemplate 已經(jīng)使用 jackson 為你做了,只需要


YourObject response = restTemplate.getForObject(

                    "https://apifrommyrequest.com/user/{id}",

                    YourObject.class,

                    73442);

然后它將映射到你的 pojo 對象,在這種情況下你真的不需要 gson。


查看完整回答
反對 回復(fù) 2023-05-17
  • 3 回答
  • 0 關(guān)注
  • 156 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號