我正在尝试从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"
    },


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

谢谢

最佳答案

您的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);

07-28 03:24