我试图在带有Jackson注释的java中使用RestTemplate来使用Json响应,并且我有一个具有许多名称属性的资源,如下所示:
{
-name1:{
id:2,
price:12,
name:"Bob:
},
-name2:{
id:111,
price:1.1,
name:"Ron:
},
-name3:{
id:10,
price:33,
name:"jhon:
},
}
并且列表继续这样。 这是我的代码,如何获取其中一个实体,如name1 object:
public class Class1 {
private RestTemplate restTemplate;
private String url = "https://url.com/api";
private Response response;
private Market market ;
public class1(){
restTemplate = new RestTemplate();
response = restTemplate.getForObject(url,Response.class);
}
@Override
public Market getResults() {
market = response.getResult();
System.out.println(Market);
return null;
}
}
并且响应类是这样的:
@JsonIgnoreProperties(ignoreUnknown = true)
@Getter
@Setter
@NoArgsConstructor
public class Response {
@JsonProperty("name1")
private Market result;
}
如何将所有这些元素作为数组或ArrayList获取? 这个API来自第三方网站,并且在Json响应中存在许多实体。 提前谢谢。
答案 0 :(得分:0)
所以在上面的Json中,它不是一个数组,而是一个键值对的列表。
这是Json中的数组:
onEditMethod
那你可以做的是:
public void onRowEdit(RowEditEvent event) {
Plant editedPlant = (Plant)event.getObject();
plantDAO.edit(plant);
FacesMessage msg = new FacesMessage("Plant Edited");
FacesContext.getCurrentInstance().addMessage(null, msg);
}
但由于您的示例是地图,因此您需要使用MAP
{
marketResults: [
{
id:2,
price:12,
name:"Bob:
},
{
id:111,
price:1.1,
name:"Ron:
},
{
id:10,
price:33,
name:"jhon:
}
]
}
该帖子实际上与您的相似:Reading JSON map structure via spring boot
答案 1 :(得分:0)
如果您可以使用对此用例具有本机支持的Gson库。 保持代码清洁和输入。
@Getter
@Setter
public class Response {
@SerializedName(value = "name1", alternate={"name2","name3"})
private Market result;
}
@SerializedName
是Gson中的@JsonProperty
等价物。