如何在 RestTemplate 中获取 JSONArray 列表 Spring
How to get the JSONArray List in RestTemplate Spring
第一个 API 回复
{
"initial": null,
"answer":
[
{
"id": 13,
"name": "Lion",
"allowed_values": [
"2017",
"2018",
],
"archived": false
},
{
"id": 14,
"name": "Tiger",
"allowed_values": [
"2017",
"2018",
],
"archived": true
}
],
"final": null
}
第二次 API 回复
{
"initial": null,
"answer":
[
{
"date_purchased":null,
"Tested": true,
"RollId":12
},
{
"date_purchased":null,
"Tested": true,
"RollId":16
}
],
"final": null
}
演示 Class
public class Demo {
String initial;
Object answer;
String final;
}
我的 RestTemplate 实体
ResponseEntity<Demo> response = restTemplate.exchange(getURL1stAPI, HttpMethod.GET, entity, Demo.class);
我可以将答案用作对象数据类型,但我想将答案定义为 Std class 以更好地控制 it.But 问题是答案可以有许多不同的形式,如前所述在上面 JSON 个回复中。
public class answer_1 {
Date date;
String name;
Set<String> allowed_values;
String archived;
}
public class answer_2 {
Date date_purchased;
String Tested;
int RollId
}
所以我可以通过在调用时提供 answer 的数据类型作为 answer_1 或 answer_2 来重复使用相同的演示 class restTemplate.But 我不知道该怎么做!
提前致谢,
周杰伦
您需要像这样修改您的演示 class
public class Demo {
String initial;
List<Object> answer;
@JsonProperty("final")
String finalValue;
}
要同时匹配 json。
- answer 是一个数组,因此您需要将其声明为列表。
- 不能使用 final 作为字段名,因为 final 是关键字。或者,您可以创建一些其他字段,如 finalValue,但使用
@JsonProperty
将 json final 映射到该字段
第一个 API 回复
{
"initial": null,
"answer":
[
{
"id": 13,
"name": "Lion",
"allowed_values": [
"2017",
"2018",
],
"archived": false
},
{
"id": 14,
"name": "Tiger",
"allowed_values": [
"2017",
"2018",
],
"archived": true
}
],
"final": null
}
第二次 API 回复
{
"initial": null,
"answer":
[
{
"date_purchased":null,
"Tested": true,
"RollId":12
},
{
"date_purchased":null,
"Tested": true,
"RollId":16
}
],
"final": null
}
演示 Class
public class Demo {
String initial;
Object answer;
String final;
}
我的 RestTemplate 实体
ResponseEntity<Demo> response = restTemplate.exchange(getURL1stAPI, HttpMethod.GET, entity, Demo.class);
我可以将答案用作对象数据类型,但我想将答案定义为 Std class 以更好地控制 it.But 问题是答案可以有许多不同的形式,如前所述在上面 JSON 个回复中。
public class answer_1 {
Date date;
String name;
Set<String> allowed_values;
String archived;
}
public class answer_2 {
Date date_purchased;
String Tested;
int RollId
}
所以我可以通过在调用时提供 answer 的数据类型作为 answer_1 或 answer_2 来重复使用相同的演示 class restTemplate.But 我不知道该怎么做!
提前致谢,
周杰伦
您需要像这样修改您的演示 class
public class Demo {
String initial;
List<Object> answer;
@JsonProperty("final")
String finalValue;
}
要同时匹配 json。
- answer 是一个数组,因此您需要将其声明为列表。
- 不能使用 final 作为字段名,因为 final 是关键字。或者,您可以创建一些其他字段,如 finalValue,但使用
@JsonProperty
将 json final 映射到该字段