我用的是swapi。在Spring Boot中获取应用程序数据的dev API。我需要用一个行星的名字来获取它的信息。因此,我使用下一个url:https://swapi.dev/api/planets/?search=Tatooine.JSON结果如下所示:
{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"name": "Tatooine",
"rotation_period": "23",
"orbital_period": "304",
"diameter": "10465",
"climate": "arid",
"gravity": "1 standard",
"terrain": "desert",
"surface_water": "1",
"population": "200000",
"residents": [
"http://swapi.dev/api/people/1/",
"http://swapi.dev/api/people/2/",
"http://swapi.dev/api/people/4/",
"http://swapi.dev/api/people/6/",
"http://swapi.dev/api/people/7/",
"http://swapi.dev/api/people/8/",
"http://swapi.dev/api/people/9/",
"http://swapi.dev/api/people/11/",
"http://swapi.dev/api/people/43/",
"http://swapi.dev/api/people/62/"
],
"films": [
"http://swapi.dev/api/films/1/",
"http://swapi.dev/api/films/3/",
"http://swapi.dev/api/films/4/",
"http://swapi.dev/api/films/5/",
"http://swapi.dev/api/films/6/"
],
"created": "2014-12-09T13:50:49.641000Z",
"edited": "2014-12-20T20:58:18.411000Z",
"url": "http://swapi.dev/api/planets/1/"
}
]
}
现在,在Java中,我使用服务中的下一个代码:
public PlanetDTO getPlanetByName(String name){
String url = "https://swapi.dev/api/planets/?search=Tatooine";
RestTemplate restTemplate = new RestTemplate();
Object object = restTemplate.getForObject(url, Object.class);
// I don't know how to get the array of results
}
我只需要得到结果的数组,但是,我如何从对象得到结果的数组?
因为您使用的是Spring Boot,所以它通常与用于JSON解析的便捷工具捆绑在一起。Spring Boot将默认jackson连接到应用程序中。
首先,您需要一个(简化的)POJO响应模型。
@JsonIgnoreProperties(ignoreUnknown = true)
public class ResponsePojo {
@JsonProperty("<jsonFieldName>") // only required, if fieldName != jsonFieldName
private List<String> residents;
/* getter & setter ommitted */
}
在你的呼叫代码中,使用
ResponsePojo response = restTemplate.getForObject(url, ResponsePojo.class);
response.getResidents() gives you access to the contents of 'resident' array
幕后发生了什么?
RestTemplate发送您的请求,并尝试将响应解析为您的ResponsePojo对象。由于pojo是响应的简化表示,我们提供了注释@JsonIgnoreProperties(ignoreUnknown=true)
。这告诉解析器,它应该简单地忽略json中无法映射到pojo的任何字段。由于提供了一个字段,其确切名称与json中的相同,因此解析器能够相应地识别和映射它们。
问题内容: 我正在struts上从事Web服务。现在我想要json对象使用其键值。然后,我必须发布类似数组的内容作为响应。我不知道如何在Struts中做到这一点。我知道如何在Servlet中执行此操作。因此,我使用的是我尝试过的以下代码,但我认为Struts中的代码有所不同。 因此,如何在Struts中做到这一点。还请告诉我如何解析json数组作为响应。 问题答案: 使用JSON无需将JSON发送
问题内容: 我想做的是从而不是从Volley库中使用一些数据。 以下是用于从服务器中获取JSON对象的代码。 我试图改变到后改为。但这并没有解决。 问题答案: 中的url 不是可选的,并且JSONObject参数用于将带有请求的参数发布到url。 从文档中:http : //afzaln.com/volley/com/android/volley/toolbox/JsonObjectRequest
问题内容: 我有一个JSON对象,其中有一个字段是生日日期: 但是该方法在JSONObject中不存在。 如何在用户对象中设置出生日期? 问题答案: 您可能会喜欢以下内容, 希望对您有所帮助:)
问题内容: 我正在与集成的android应用程序上工作。我正在使用fql查询从Facebook获取信息。我的fql方法是 myjson对象具有我想要的所有信息。像这样 问题是如何将该信息存储到不同的阵列中? 请为此修改一些代码。 问题答案: 检查http://www.androidhive.info/2012/01/android-json-parsing- tutorial/
问题内容: 我想用动态表创建Jasper报告。 例如: 用户1-5张桌子 用户2-3张桌子 用户3-6桌 我尝试使用列表选项,但是我的表不可见,并且页面数正在增加。 杰森数据。 是我的报表数据集,是列表数据,也是我要在表中显示的数据。 注意 如果我删除 并把 然后,使用空值创建两个表。 问题答案: 对主报表的查询将其保留为空白(并保留mainDataSet节点) 将字段定义为 该传递给 因此指向
我想从API中获取countynames,它返回嵌套对象; 等等,有200多个国家,每个县都有自己的“编号”。最后,我想列出所有“姓名”信息。我想我应该使用JsonDeserializer,但不幸的是我不能。