Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Consumir Json utilizando java

Gente, preciso de ajuda, se alguém puder me ajudar, agradeço! Estou recebendo um JSON e queria saber se posso levar as informações para uma LIST do meu modelo. é uma chamada para enviar 1 SMS Esta é a primeira vez que tento fazer algo com o JSON meu model tem todos os getters e setters.

public class Zenvia {

@JsonProperty("sendSmsResponse")
private String sendSmsResponse;

//Request
@JsonProperty("id")
private String id;
@JsonProperty("from")
private String from;
@JsonProperty("to")
private String to;
@JsonProperty("msg")
private String msg;
@JsonProperty("schedule")
private String schedule;
@JsonProperty("callbackOption")
private String callbackOption;
@JsonProperty("aggregateId")
private String aggregateId;
@JsonProperty("flashSms")
private boolean flashSms;

//Response
private long stats;
@JsonProperty("statusCode")
private String statusCode;
@JsonProperty("statusDescription")
private String statusDescription;
@JsonProperty("detailCode")
private String detailCode;
@JsonProperty("detailDescription")
private String detailDescription;
@JsonProperty("mobileOperatorName")
private String mobileOperatorName;
@JsonProperty("received")
private String received;

//getters and setters
}

minha chamada

public Zenvia senderUnique(Zenvia zenvia) {

        Response response = null;
        try {

            Client client = ClientBuilder.newClient();
            Entity payload = Entity.json("    {\n"
                    + "        \"sendSmsRequest\": {\n"
                    + "            \"from\": \"" + zenvia.getFrom() + "\",\n"
                    + "            \"to\": \"" + zenvia.getTo() + "\",\n"
                    + "            \"schedule\": \"" + zenvia.getSchedule() + "\",\n"
                    + "            \"msg\": \"" + zenvia.getMsg() + "\",\n"
                    + "            \"callbackOption\": \"" + zenvia.getCallbackOption() + "\",\n"
                    + "            \"id\": \"" + zenvia.getId() + "\",\n"
                    + "            \"aggregateId\": \"" + zenvia.getAggregateId() + "\",\n"
                    + "            \"flashSms\": " + zenvia.isFlashSms() + "\n"
                    + "        }\n"
                    + "    }");

            response = client.target("https://api-rest.zenvia360.com.br/services/send-sms")
                    .request(MediaType.APPLICATION_JSON_TYPE)
                    .header("Authorization", "Basic ***********")
                    .header("Accept", "application/json")
                    .post(payload);

            System.out.println("status: " + response.getStatus());
            System.out.println("headers: " + response.getHeaders());
            System.out.println("body:" + response.readEntity(String.class));

            response.close();
        } catch (Exception e) {
            e.printStackTrace();
        }

        return zenvia;
    }

Aqui segue meu retorno vindo daqui

response.readEntity(String.class)

meu retorno pode conter 1 ou mais resultados, qual a melhor pratica de consumir isso num LIST ?

string JSON response that im getting

body:{
  "sendSmsMultiResponse" : {
    "sendSmsResponseList" : [ {
      "statusCode" : "10",
      "statusDescription" : "Error",
      "detailCode" : "080",
      "detailDescription" : "Message with same ID already sent"
    }, {
      "statusCode" : "10",
      "statusDescription" : "Error",
      "detailCode" : "080",
      "detailDescription" : "Message with same ID already sent"
    }, {
      "statusCode" : "10",
      "statusDescription" : "Error",
      "detailCode" : "080",
      "detailDescription" : "Message with same ID already sent"
    } ]
  }
}
1 resposta
solução!

Pela anotação @JsonProperty você já está usando Jackson.

Você pode pegar essa String e usar o Jackson para transformá-la em um List<Zenvia>