gpt4 book ai didi

java - 如何从gson获取嵌套数据?

转载 作者:行者123 更新时间:2023-11-29 06:48:39 25 4
gpt4 key购买 nike

我向外部 RESTful api 发出了一个 get 请求,并收到一个具有此结构的 json 对象作为响应:

{
"data": {
"id": 1,
"name": "John Doe",
"email": "doe@john.com",
"urlPicture": "urlPicture.com/82819",
"address": {
"street": "My street",
"number": "29",
"city": "Nurnberg",
"country": "Germany"
}
}
}

我不需要这个响应的所有内容,我只想将一些字段保存在数据库中。

我的 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
}

但是,当我尝试提取我想要的字段时,我在这些字段中收到 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/73442
22: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 OK
22: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.

最佳答案

试试下面的代码。您不能直接访问国家/地区,它是放置在嵌套对象中的值。而且由于响应主体作为数据返回,因此您无法将其转换为用户对象。首先,您需要将其转换为数据对象。

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);
}

关于java - 如何从gson获取嵌套数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57351330/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com