改进项目列表始终为空

时间:2015-07-09 13:13:18

标签: android json retrofit

我正在尝试从我的Android应用程序中的WS获取项目列表,但响应始终为null。

这是我的代码,我无法弄清楚:

接口:

public interface CategoriesInterface {

   @GET("/categories")
   List<CategorieModel> getCategories(@Query("k") String token);
}

AsynkTask:

    new AsyncTask<String, Void, Void>() {
    @Override
    protected Void doInBackground(String... params) {
        try {
            Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create();

            RestAdapter restAdapter = new RestAdapter.Builder()
                    .setEndpoint( "WS_URL" ) // The base API endpoint.
                    .setConverter( new GsonConverter(gson) )
                    .setLogLevel(RestAdapter.LogLevel.FULL)
                    .build();

            CategoriesInterface categoriesInterface = restAdapter.create( CategoriesInterface.class );

            List<CategorieModel> list = categoriesInterface.getCategories( params[0] );

            // LIST IS ALWAYS NULL

        } catch (RetrofitError error) {
            Log.e("ERROR", error.toString());
        }

        return null;
    }

}.execute( token );

型号:

public class CategorieModel {

   @SerializedName("id")
   private String id;

   @SerializedName("cat_pt")
   private String cat_pt;

   @SerializedName("cat_es")
   private String cat_es;
}

响应JSON格式:

 "categories": [
    {
        "id": "2",
        "cat_pt": “STRING",
        "cat_es": “STRING"
    },

我不知道我做错了什么。响应列表始终为空。

谢谢

1 个答案:

答案 0 :(得分:1)

您的JSON返回一个CategoryContainer,其中包含一个CategorieModel数组。添加新的模型类:

public class CategorieContainer {
    private List<CategorieModel> categories = new ArrayList<>();
    // TODO Getter / Setter
}

并更改您的Retrofit-Interface:

@GET("/categories")
CategorieContainer getCategories(@Query("k") String token);