【问题标题】:How to fetch JSON array without any key in Retrofit (Android)?如何在 Retrofit (Android) 中获取没有任何键的 JSON 数组?
【发布时间】:2017-02-13 12:54:44
【问题描述】:

我有一个 JSON array 没有任何对象(键),里面有 JSON Objects 像这样:

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

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

【问题讨论】:

  • List<Event>,其中Event 包含类型、名称、开始日期和结束日期字段。
  • 为什么无缘无故投反对票,我不知道我问错了什么
  • @CommonsWare 感谢您回复您的建议 :)

标签: android json retrofit2


【解决方案1】:

您可以定义一个代表 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();

【讨论】:

  • 10+ 用于直接请求列表 Call> getMeetings();
  • 如果不是数组怎么办?
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

    Json 响应:

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

    【讨论】:

      猜你喜欢
      • 2020-10-30
      • 2015-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多