2017-01-28 18 views
1

Я пробовал модифицировать Android. Ответ был нулевым. Если мое понимание правильное, это может быть из-за ответа 400 или неправильного моделирования ответа в моем классе модели. Ответ, который я получаю следующим образом:Модернизация: как решить класс?

{"itemA":"data", 
"itemB":"data", 
"itemC":"data", 
"ItemC":"", 
"result_arr":[{"Val1":"A","Val2":"","id":"id","pr":"$0.00","sid":"a","cid":"a","price":"$0.00","cool_down":"0%","url":"","name":"Name"}, 
{"Val1":"A","Val2":"","id":"id","pr":"$0.00","sid":"a","cid":"a","price":"$0.00","cool_down":"0%","url":"","name":"Name"}] 
,"statusCode":"200"} 

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

результат API

public class APIResultModel { 
@SerializedName("itemA") 
public String itemA; 
@SerializedName("itemB") 
public String itemB; 
@SerializedName("itemC") 
public String itemC; 
@SerializedName("itemD") 
public string itemD; 
@SerializedName("results_arr") 
public List<ProductModel> results_arr; 
@SerializedName("status_code") 
public String statusCode; 
} 

Результат массива Модель:

public class ResultArrayModel { 
public String val1; 
public String val2; 
public String id; 
public String pr; 
public String sid; 
public String cid; 
public String price; 
public String cool_down; 
public String url; 
public String name; 
} 

Как должна выглядеть модель для этого ответа? И как получается модель из значений отклика?

+0

Вы проверили response.code() ;? – AnixPasBesoin

+0

@AnixPasBesoin Да, то есть 200. –

+0

Можете ли вы разместить свою модель? – AnixPasBesoin

ответ

2

Глядя на ваш код, вы, кажется, используете Gson.

Для того, чтобы Gson, чтобы создать свой pojo, ваша модель serializedNames должно соответствовать json ответу вы получаете.

Вы должны изменить:

@SerializedName("status_code") 

к:

@SerializedName("statusCode") 

Убедитесь, что все атрибуты следуют этому правилу, и вы хорошо идти.

0

Учитывая JSON:

{ 
    "itemA": "data", 
    "itemB": "data", 
    "itemC": "data", 
    "ItemD": "", 
    "result_arr": [ 
     { 
      "Val1": "A", 
      "Val2": "", 
      "id": "id", 
      "pr": "$0.00", 
      "sid": "a", 
      "cid": "a", 
      "price": "$0.00", 
      "cool_down": "0%", 
      "url": "", 
      "name": "Name" 
     }, 
     { 
      "Val1": "A", 
      "Val2": "", 
      "id": "id", 
      "pr": "$0.00", 
      "sid": "a", 
      "cid": "a", 
      "price": "$0.00", 
      "cool_down": "0%", 
      "url": "", 
      "name": "Name" 
     } 
    ], 
    "statusCode": "200" 
} 

Ваш апи результат модель может быть:

public class APIResult { 

    public String itemA; 

    public String itemB; 

    public String itemC; 

    public String itemD; 

    @SerializedName("results_arr") 
    public List<Product> products; 

    public String statusCode; 
} 

И ваша модель продукта может быть:

public class Product { 

    @SerializedName("Val1") 
    public String val1; 

    @SerializedName("Val2") 
    public String val2; 

    public String id; 

    public String pr; 

    public String sid; 

    public String cid; 

    public String price; 

    @SerializedName("cool_down") 
    public String coolDown; 

    public String url; 

    public String name; 
} 

Предположив, что вы используете GSON, вы должен использовать только аннотацию SerializedName, когда имя поля не совпадает с именем в JSON.

Есть некоторые приложения, которые делают преобразование из JSON в POJO, например, Tyr.