当前位置: 代码迷 >> Android >> 如何在 Retrofit (Android) 中没有任何键的情况下获取 JSON 数组?
  详细解决方案

如何在 Retrofit (Android) 中没有任何键的情况下获取 JSON 数组?

热度:130   发布时间:2023-08-04 10:28:59.0

我有一个没有任何对象(键)的JSON array ,其中有这样的JSON Objects

[
  {
    "Type": "Meeting",
    "Name": "TestMeeting",
    "StartDate": "2016-03-22T08:00:00",
    "EndDate": "2016-03-24T09:00:00"
  }
]

我试图解析它但找不到成功,谁能建议我如何使用Retrofit解析这种类型的响应?

您可以定义一个表示 JSON 对象的Class

import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;

public class Meeting{

@SerializedName("Type")
@Expose
private String type;
@SerializedName("Name")
@Expose
private String name;
@SerializedName("StartDate")
@Expose
private String startDate;
@SerializedName("EndDate")
@Expose
private String endDate;

public String getType() {
return type;
}

public void setType(String type) {
this.type = type;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getStartDate() {
return startDate;
}

public void setStartDate(String startDate) {
this.startDate = startDate;
}

public String getEndDate() {
return endDate;
}

public void setEndDate(String endDate) {
this.endDate = endDate;
}

}

之后,您定义回调以进行改造,例如Call<List<Meeting>> getMeetings();

如果您正在使用 Gson 解析,那么简单地这样做

 var model = Gson().fromJson(response.body()!!.string(), Array<Meeting>::class.java).toList()

杰森响应:

{"contacts":{"918888302649":0,"917207251056":0,"918888804581":0}}

POJO 类:

public class ContactSyncResponseModel {

    @SerializedName("contacts")
    @Expose
    private Map<String, String> result;

    public Map<String, String> getResult() {
        return result;
    }

    public void setResult(Map<String, String> result) {
        this.result = result;
    } }