繁体   English   中英

翻新JSON数组解析

[英]Retrofit JSON Array Parsing

无法理解如何解析此json数组。


[{“ id”:“ 154”,“ ontime”:“ 2016-03-15”,“ offtime”:“ 2016-04-14”,“ usluga_id”:“ 2”,“ name”:“ 50mpbs”, “ period”:“ 30”,“ cost”:“ 300”},

{“ id”:“ 152”,“ ontime”:“ 2016-03-15”,“ offtime”:“ 2016-04-14”,“ usluga_id”:“ 4”,“ name”:“ TV60”,“期间“:” 30“,”费用“:” 100“},

{“ id”:“ 156”,“ ontime”:“ 2016-03-15”,“ offtime”:“ 2016-04-04”,“ usluga_id”:“ 5”,“ name”:“ TV120”,“期间”:“ 20”,“费用”:“ 200”},

{“ id”:“ 153”,“ ontime”:“ 2016-03-15”,“ offtime”:“ 2016-03-30”,“ usluga_id”:“ 6”,“ name”:“ SMS-check” ,“期间”:“ 15”,“费用”:“ 50”}]


@Generated(“ org.jsonschema2pojo”)

public class UserService {
@SerializedName("id")
@Expose
private String id;
@SerializedName("ontime")
@Expose
private String ontime;
@SerializedName("offtime")
@Expose
private String offtime;
@SerializedName("usluga_id")
@Expose
private String uslugaId;
@SerializedName("name")
@Expose
private String name;
@SerializedName("period")
@Expose
private String period;
@SerializedName("cost")
@Expose
private String cost;

/**
 *
 * @return
 * The id
 */
public String getId() {
    return id;
}

/**
 *
 * @param id
 * The id
 */
public void setId(String id) {
    this.id = id;
}

/**
 *
 * @return
 * The ontime
 */
public String getOntime() {
    return ontime;
}

/**
 *
 * @param ontime
 * The ontime
 */
public void setOntime(String ontime) {
    this.ontime = ontime;
}

/**
 *
 * @return
 * The offtime
 */
public String getOfftime() {
    return offtime;
}

/**
 *
 * @param offtime
 * The offtime
 */
public void setOfftime(String offtime) {
    this.offtime = offtime;
}

/**
 *
 * @return
 * The uslugaId
 */
public String getUslugaId() {
    return uslugaId;
}

/**
 *
 * @param uslugaId
 * The usluga_id
 */
public void setUslugaId(String uslugaId) {
    this.uslugaId = uslugaId;
}

/**
 *
 * @return
 * The name
 */
public String getName() {
    return name;
}

/**
 *
 * @param name
 * The name
 */
public void setName(String name) {
    this.name = name;
}

/**
 *
 * @return
 * The period
 */
public String getPeriod() {
    return period;
}

/**
 *
 * @param period
 * The period
 */
public void setPeriod(String period) {
    this.period = period;
}

/**
 *
 * @return
 * The cost
 */
public String getCost() {
    return cost;
}

/**
 *
 * @param cost
 * The cost
 */
public void setCost(String cost) {
    this.cost = cost;
}

public class ServicesArray {

private List<UserService> services;
public ServicesArray(){};

public List<UserService> getServices() {
    return services;
}

public void setServices(List<UserService> services) {
    this.services = services;
}

活动中...

公共无效的GetUserServices(){

    Retrofit retrofit = new Retrofit.Builder()
            .baseUrl("http://cybergenesis.ru/egor/")
            .addConverterFactory(GsonConverterFactory.create())
            .build();

    APIService service = retrofit.create(APIService.class);

    Call<ServicesArray> call = service.getUserServices("egoraa");

    call.enqueue(new Callback<ServicesArray>() {
        @Override
        public void onResponse(Call<ServicesArray> call, retrofit2.Response<ServicesArray> response) {
            String[] services = new String[response.body().getServices().size()];
            response.body().getServices().toArray(services);
        Log.d(TAG,"OKKKK");
        }

        @Override
        public void onFailure(Call<ServicesArray> call, Throwable t) {
            Log.d(TAG,"ERROR PROFIT");
        }
    });
}

日志:D / MainScreen:错误利润


响应为空,我的问题是什么?

您发布的JSON是用户列表,因此,与其创建ServicesArray类进行解析,不如对其进行反序列化,就好像它是User对象列表一样:

  Type type = new TypeToken<Collection<User>>(){}.getType();
  List<User> users = new Gson().fromJson(jsonString,type);

代替:

  List<User> users = new Gson().fromJson(jsonString,User.class);

您有一系列用户。 使用它作为服务回调的返回类型。 阵列映射到改造中的列表。

public class UserList{

private List<User>users;

public UserList(){};

public List<User>getUsers() {
return users;
}

 public void setUsers(List<User>users) {
  this.users= users;
 }
} 

如果所有响应都为json格式,则可以在所有响应上设置GSON Converter

        Retrofit retrofit = new Retrofit.Builder()
            .baseUrl(BASE_URL)    
           .addConverterFactory(GsonConverterFactory.create(builder.create()))
            .build();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM