【问题标题】:Android: Get JSON responseAndroid:获取 JSON 响应
【发布时间】:2020-02-03 11:03:05
【问题描述】:

我正在尝试开发一个应用程序来调用 Flickr API 方法搜索以获取 JSON 响应,并且每次我这样做时,它都会返回一个对象引用,例如 'com.rdev.imagegallery.obj.FlickrPhotos@bb2935b' 而不是 JSON回复。 我正在使用 MVVM 并阅读

public ApiResponse(Response<T> response) {

    code = response.code();
    Timber.d("====Api Response");

    if(response.isSuccessful()) {
        Timber.d("response is success");
        body = response.body();
        Timber.d("Body:"+body.toString());<---------- response: com.rdev.imagegallery.obj.FlickrPhotos@bb2935b
        errorMessage = null;
    }
(...)

我正在使用改造来调用 Flickr API,并传递 URL

return new Retrofit.Builder()
            .baseUrl(BuildConfig.MAINBASEURL)
            .client(okHttpClient)
            .addConverterFactory(GsonConverterFactory.create())
            .addCallAdapterFactory(new LiveDataCallAdapterFactory())
            .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
            .build();

//call API Flickr
@Override
public LiveData<ApiResponse<FlickrPhotos>> getValues(String url) {
    Timber.d("URL:"+url);
    return mMainApiHelper.getValues(url);
}

网址正确(我已经测试过了)。我有调用 API 的接口。

公共接口 MainApiHelper {

@GET
LiveData<ApiResponse<FlickrPhotos>> getValues(@Url String url);

}

我有一个类 FlickPhotos 来“获取”结果(每次我调用 API 时都会得到一个这种类型的对象):

public class FlickrPhotos {

    @SerializedName("page")
    @Expose
    private int page;

    @SerializedName("pages")
    @Expose
    private String pages;

    @SerializedName("perpage")
    @Expose
    private int perpage;

(...)

我试图验证调用后我得到了哪些值,它们都是空的(所以我认为问题出在调用上)

Timber.d("Answer:"+apiResponse.body.getPages());--->null
Timber.d("Answer:"+apiResponse.body.getPage());--->0
Timber.d("Answer:"+apiResponse.body.getStart());--->null

【问题讨论】:

  • 我不是故意的,但是……如果你不给我们看相关的代码,我们怎么能开始呢?您在此处显示的内容类似于说:我做了一个蛋糕,看起来很糟糕,我做错了什么?。
  • @MartinMarconcini 请告诉我你想让我给你看什么代码?我得到的是一个对象引用,而不是一个“正常”的响应。请帮忙
  • 您可以考虑扩展您的minimal reproducible example 以显示您实际如何进行此Web 服务调用以及您如何使用ApiResponse。例如,如果您正在使用 Retrofit,那么您得到的正是您告诉 Retrofit 做的事情:调用 Web 服务并将响应转换为您的 com.rdev.imagegallery.obj.FlickrPhotos 类的实例。
  • @CommonsWare 说了什么。
  • @CommonsWare 我添加了更多信息。

标签: android json


【解决方案1】:

你可以试试这个: https://stackoverflow.com/a/58146179/11939647

您调用 API 并读取响应并将其放入 Json 对象中。

【讨论】:

    【解决方案2】:

    问题是我的 POJO 类定义错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-06-28
      • 2018-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多