使用 json 消耗 json 来建模

consuming json to model using java

各位,我需要帮助,如果有人能帮助我,我谢谢你们!

我收到 JSON 并想知道我是否可以将这些信息添加到我的模型的列表中。

是来电发1条短信

这是我第一次尝试用JSON

做点什么

我的模型有所有的 getter 和 setter。

型号

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
}

我的电话

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;
    }

此时我有此 return,这是使用此数据的最佳实践,我有一个模型准备接收此信息。

正在转换为 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"
    } ]
  }
}

可以是一个或多个结果,列表也是如此。

您可以阅读对 String 的回复,然后 Map 使用 jackson

将其发送到您的 Entity class
ObjectMapper mapper = new ObjectMapper();
String jsonInString = response.readEntity(String.class);

//Convert JSON from String to Object
List<YourEntityModelObject> objList = mapper.readValue(jsonInString, new TypeReference<List<YourEntityModelObject>>(){});