Take a Jsonarray and set as Arraylist<object>

Asked

Viewed 110 times

0

Basically, I have a code that gets a JSON from an API. This JSON gets a "reposicoes" array, where it contains the information I need.
An example of this JSON:

{"idConsulta":"28012019174957","quantidadeTotal":15,"reposicoes":[{"sku":"547572491","codigoPai":"547572441","nomeNegocio":"Negócio 2", "nomeDivisao":"R_I(O)","nomeGrupo":"R_I_Calçados","nomeClasse":"Fuz A", "nomeSubclasse":"Tenis FuzA","cor":"Rosa","tamanho":"30",   "foto":"https://img.lojasrenner.com.br/item/547572459/zoom/1.jpg",  "quantidadeEstoque":6,"quantidadeReposicao":1,"preco":69.9,"rfid":false,    "caracteristicas":{"tempoExposicao":1,"atraso":null,"remarcacao":3, "tipoArmazenamento":1,"recebimento":2}},{"sku":"546963394","codigoPai":"546963351","nomeNegocio":"Negócio 1","nomeDivisao":"R_C","nomeGrupo":"R_C_Feminino","nomeClasse":"Sapatos", "nomeSubclasse":"Sapatilha","cor":"Azul Marinho","tamanho":"37","foto":"https://img.lojasrenner.com.br/item/546963407/zoom/1.jpg","quantidadeEstoque":13,"quantidadeReposicao":1,"preco":59.9,"rfid":false, "caracteristicas":{ "tempoExposicao":2,"atraso":null,"remarcacao":1,    "tipoArmazenamento":2,"recebimento":2}},{"sku":"547788647","codigoPai":"547788639","nomeNegocio":"Negócio 1","nomeDivisao":"R_C","nomeGrupo":"R_C_Bijuterias","nomeClasse":"Brinco","nomeSubclasse":"Brinco","cor":"Ouro Light","tamanho":"U","foto":"https://img.lojasrenner.com.br/item/547788647/zoom/1.jpg","quantidadeEstoque":2,"quantidadeReposicao":1,"preco":25.9,"rfid":false,"caracteristicas":{"tempoExposicao":1,"atraso":null,"remarcacao":3,"tipoArmazenamento":1,"recebimento":2}},{"sku":"542584063","codigoPai":"542584055","nomeNegocio":"Negócio 1","nomeDivisao":"R_C","nomeGrupo":"R_C_Bijuterias","nomeClasse":"Cabelo","nomeSubclasse":"Cabelo","cor":"Preto","tamanho":"UNICO","foto":null,"quantidadeEstoque":11,"quantidadeReposicao":1,"preco":5.9,"rfid":false,"caracteristicas":{"tempoExposicao":2,"atraso":null,"remarcacao":1,"tipoArmazenamento":1,"recebimento":2}},{"sku":"543068941","codigoPai":"543068933","nomeNegocio":"Negócio 1","nomeDivisao":"R_C","nomeGrupo":"R_C_Bijuterias","nomeClasse":"Cabelo","nomeSubclasse":"Cabelo","cor":"Sortido","tamanho":"U","foto":null,"quantidadeEstoque":13,"quantidadeReposicao":1,"preco":5.9,"rfid":false,"caracteristicas":{"tempoExposicao":2,"atraso":null,"remarcacao":1,"tipoArmazenamento":1,"recebimento":2}},{"sku":"547867370","codigoPai":"547867361","nomeNegocio":"Negócio 1","nomeDivisao":"R_C","nomeGrupo":"R_C_Bijuterias","nomeClasse":"Outros","nomeSubclasse":"Outros","cor":"Sortido","tamanho":"U","foto":"https://img.lojasrenner.com.br/item/547867370/zoom/1.jpg","quantidadeEstoque":19,"quantidadeReposicao":1,"preco":9.9,"rfid":false,"caracteristicas":{"tempoExposicao":1,"atraso":null,"remarcacao":3,"tipoArmazenamento":1,"recebimento":2}},{"sku":"547255779","codigoPai":"547255761","nomeNegocio":"Negócio 1","nomeDivisao":"R_C","nomeGrupo":"R_C_Bijuterias","nomeClasse":"Outros","nomeSubclasse":"Outros","cor":"Sortido","tamanho":"U","foto":"https://img.lojasrenner.com.br/item/547255779/zoom/1.jpg","quantidadeEstoque":5,"quantidadeReposicao":1,"preco":9.9,"rfid":false,"caracteristicas":{"tempoExposicao":2,"atraso":null,"remarcacao":3,"tipoArmazenamento":1,"recebimento":2}},{"sku":"547505686","codigoPai":"547505678","nomeNegocio":"Negócio 1","nomeDivisao":"R_C","nomeGrupo":"R_C_BO/CI/CA","nomeClasse":"Cinto","nomeSubclasse":"Cinto","cor":"Marrom","tamanho":"80cm","foto":null,"quantidadeEstoque":18,"quantidadeReposicao":1,"preco":35.9,"rfid":false,"caracteristicas":{"tempoExposicao":1,"atraso":null,"remarcacao":3,"tipoArmazenamento":1,"recebimento":2}},{"sku":"546647201","codigoPai":"546647199","nomeNegocio":"Negócio 1","nomeDivisao":"R_C","nomeGrupo":"R_C_Acessorios_Diversos","nomeClasse":"Viagem","nomeSubclasse":"Necessaires/Portas","cor":"Sortido","tamanho":"UNICO","foto":"https://img.lojasrenner.com.br/item/546647201/zoom/1.jpg","quantidadeEstoque":12,"quantidadeReposicao":1,"preco":9.9,"rfid":false,"caracteristicas":{"tempoExposicao":1,"atraso":null,"remarcacao":3,"tipoArmazenamento":1,"recebimento":2}},{"sku":"547528239","codigoPai":"547528221","nomeNegocio":"Negócio 1","nomeDivisao":"R_C","nomeGrupo":"R_C_Acessorios_Diversos","nomeClasse":"Lanche","nomeSubclasse":"Garrafas/Copos","cor":"Sortido","tamanho":"UNICO","foto":"https://img.lojasrenner.com.br/item/547528239/zoom/1.jpg","quantidadeEstoque":31,"quantidadeReposicao":1,"preco":39.9,"rfid":false,"caracteristicas":{"tempoExposicao":1,"atraso":null,"remarcacao":3,"tipoArmazenamento":1,"recebimento":2}}]}


And the Jsonarray that I want to turn into Arraylist would be the "repositions", and by itself access the data of this Arraylist to find a specific SKU.
Code that receives the Array for the service:

String nextLevelResponseGet =
    given()
        .contentType(ContentType.JSON)
        .queryParams("numeroPagina", 0)
        .queryParams("quantidadeResultados", quantidadeTotal)
        .queryParams("token", "aaa")
        .queryParams("idConsulta", idConsulta)
        .queryParams("codigoLoja", 100)
    .when()
        .get(URL)
    .then()
        .extract()
        .response()
        .asString();


Class that receives Arraylist

public class APIAppObjects {
private String idconsulta;
private int quantidadetotal;
private ArrayList<ItensReposicao> reposicoes;

public String getIdConsulta() {
    return idconsulta;
}

public void setIdConsulta(String idconsulta) {
    this.idconsulta = idconsulta;
}

public int getQuantidadeTotal() {
    return quantidadetotal;
}

public void setQuantidadeTotal(int quantidadetotal) {
    this.quantidadetotal = quantidadetotal;
}

public ArrayList<ItensReposicao> getListaReposicao(){
    return reposicoes;
}

public void setListaReposicao(ArrayList<ItensReposicao> listaReposicao) {
    this.reposicoes = listaReposicao;
}

}


How I could receive this Array so I could access the data from this SKU later?

1 answer

1


I managed to convert my Jsonarray that I took from the tag "reposicoes" and passing a function of GSON and Typetoken, shown below:

JSONArray listarep = responseget.getJSONArray("reposicoes");

List<ItensReposicao> listaRep = new Gson().fromJson(listarep.toString(), new TypeToken<List<ItensReposicao>>(){private static final long serialVersionUID = 1L;}.getType());

And I was also able to access the elements inside a loop loop:

for(int i = 0; i < listaRep.size(); i++) {
    if(listaRep.get(i).getSKU().equals("544383222")) {
        System.out.println(listaRep.get(i).getQuantidadeEstoque());
    }
}

Browser other questions tagged

You are not signed in. Login or sign up in order to post.