Parse JSON ответ Android-дооснащение - PullRequest
0 голосов
/ 23 мая 2019

Я пытаюсь разобрать ответ с сервера в Android-студии.Но я не получаю все значения в Arraylist.

Я создал ItemData.java и ItemResponse.java

Я вызываю API, используя метод getItemData:

public void getItemData() {
        Call<ItemDataResponse> call = service.getData(token, "200");
        call.enqueue(new Callback<ItemDataResponse>() {
            @Override
            public void onResponse(@NonNull Call<ItemDataResponse> call, @NonNull Response<ItemDataResponse> response) {

                Log.d("dataFromServer", response.body.toString());

            }

            @Override
            public void onFailure(@NonNull Call<ItemDataResponse> call, @NonNull Throwable t) {
                progressDoalog.dismiss();
                Toast.makeText(LiveVehiclesActivity.this, "Something went wrong...Please try later!", Toast.LENGTH_SHORT).show();
            }
        });
    } 

Этоответ Json:

{
   "code":"1",
   "items":[
      {
         "item_id":"200",
         "speed":"2"
      },
      {
         "item_id":"201",
         "speed":"0"
      }
   ]
}

ItemsResponse.java:

public class ItemDataResponse implements Serializable {
    @SerializedName("code")
    private String code;

    @SerializedName("items")
    @Expose
    private List<ItemData> items;



    public String getResponsecode() {
        return responsecode;
    }

    public void setResponsecode(String responsecode) {
        this.responsecode = responsecode;
    }

    public List<ItemData> getItems() {
        return items;
    }

    public void setItems(List<ItemData> items) {
        this.items = items;
    }
}

ItemData.java

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

public class ItemData {

@SerializedName("item_id")
@Expose
private String itemId;
@SerializedName("speed")
@Expose
private String speed;

public String getItemId() {
return itemId;
}

public void setItemId(String itemId) {
this.itemId = itemId;
}

public String getSpeed() {
return speed;
}

public void setSpeed(String speed) {
this.speed = speed;
}

}

После запуска в режиме отладки я получаю ответ, подобный следующему:

code:"1"
items=null

Ответы [ 3 ]

1 голос
/ 23 мая 2019

Модель ItemData не соответствует ответу JSON. то есть

{
    "item_id":"200",
    "speed":"2"
}

должно отображаться на:

class ItemData implements Serializable {

    @SerializedName("item_id")
    private String itemId;

    @SerializedName("speed")
    private String speed;

    // getters and setters

}
1 голос
/ 23 мая 2019

Использовать атрибут SerializedName для поля, содержащего «_».Здесь для item_id в вашем классе ItemData возникает проблема с отображением.

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

public class ItemData {

@SerializedName("item_id")
@Expose
private String itemId;
@SerializedName("speed")
@Expose
private String speed;

public String getItemId() {
return itemId;
}

public void setItemId(String itemId) {
this.itemId = itemId;
}

public String getSpeed() {
return speed;
}

public void setSpeed(String speed) {
this.speed = speed;
}

}

пожалуйста, измените ваш класс ItemDataResponse также

public class ItemDataResponse {

@SerializedName("code")
@Expose
private String code;
@SerializedName("items")
@Expose
private List<Item> items = null;

public String getCode() {
return code;
}

public void setCode(String code) {
this.code = code;
}

public List<Item> getItems() {
return items;
}

public void setItems(List<Item> items) {
this.items = items;
}

}
1 голос
/ 23 мая 2019

ваш должен изменить

class ItemData {
    private String item_id;
    private String speed;

    public String getItem_id() {
        return item_id;
    }

    public void setItem_id(String item_id) {
        this.item_id = item_id;
    }

    public String getSpeed() {
        return speed;
    }

    public void setSpeed(String speed) {
        this.speed = speed;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...