如何在java

时间:2017-11-18 10:02:41

标签: java json spring rest jackson

我试图在带有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响应中存在许多实体。 提前谢谢。

2 个答案:

答案 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等价物。