gpt4 book ai didi

java - Retrofit 的响应无法获取对象值

转载 作者:行者123 更新时间:2023-12-01 19:51:11 24 4
gpt4 key购买 nike

{ "StatusCode": 200, "StatusDescription": "OK", "ErrorMessage": "", "ErrorDetail": "", "Results": [ { "Key": "AccessTokens", "Value": "[{\"Key\":\"XXXXX", \"Value\":\"BABABA\"},{\"Key\":\"DIDADIDA\",\"Value\":\"YYYYY" } ]"}]}

这是我成功调用 API 时得到的响应。 “Results”的数据类型是List。谁能帮我解释一下如何获取“Key”和“Value”。

我的对象类

public class KeyValueItem {

private String Key;
private String Value;

public String getKey() {
return Key;
}

public void setKey(String key) {
Key = key;
}

public String getValue() {
return Value;
}

public void setValue(String value) {
Value = value;
}
}

响应类

public class RestServiceResponse {

@SerializedName("StatusCode")
@Expose
public int StatusCode;
public int getStatusCode() {
return StatusCode;
}


@SerializedName("StatusDescription")
@Expose
public String StatusDescription;
public String getStatusDescription() {
return StatusDescription;
}


@SerializedName("ErrorMessage")
@Expose
public String ErrorMessage;
public String getErrorMessage() {
return ErrorMessage;
}


@SerializedName("ErrorDetail")
@Expose
public String ErrorDetail;
public String getErrorDetail() {
return ErrorDetail;
}


@SerializedName("Results")
@Expose
public List<KeyValueItem> Results;
public List<KeyValueItem> getResults() {
return Results;
}

}

请大家帮忙=(

我的一些代码:

public void onResponse(Call<RestServiceResponse> call, Response<RestServiceResponse> response) {

Log.i("ddsddsadsa", String.valueOf(response.code()));
RestServiceResponse restServiceResponse = response.body();
if(restServiceResponse.getStatusCode() == 200){
List<KeyValueItem> list = response.body().getResults();
JSONArray jsonArray = new JSONArray(list);
try {
JSONObject job = jsonArray.getJSONObject(1);
String testttt = job.getString("Key");
Log.i("dsadsadsadas", testttt);
} catch (JSONException e) {
e.printStackTrace();
}

}

最佳答案

您首先必须了解的两件事。

  1. 您的 JSON 数据格式无效。它包含 \ (斜杠)以转义键值对中的双引号。要确认返回的 JSON 数据是否有效,请将您的 JSON 响应复制并粘贴到 JSON validator and Formatter 中。可能是服务器脚本有问题。
  2. 如果您将 GsonConvertorFactory 与 Retrofit 结合使用,Retrofit 会在内部自动将 JSON 响应数据转换为 POJO。因此,您不需要在 onResponse() 方法中再次解析它。如果您从服务器端获得正确的 JSON 响应,请按如下方式使用它。

    public void onResponse(Call<RestServiceResponse> call, Response<RestServiceResponse> response) {

    // code....
    RestServiceResponse restServiceResponse = response.body();

    if (restServiceResponse.getStatusCode() == 200) {

    List<KeyValueItem> list = response.body().getResults();

    for(int i = 0; i < list.size(); i++) {
    KeyValueItem kvi = list.get(i);
    // do whatever you want with kvi object
    }
    }
    }

关于java - Retrofit 的响应无法获取对象值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51300606/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com