我試圖通過http使用Retrofit for Android獲取JSON
數據。我收到以下錯誤:Android Retrofit錯誤 - 嘗試調用空對象引用的接口方法'int java.util.List.size()'
java.lang.NullPointerException: Attempt to invoke interface method 'int java.util.List.size()' on a null object reference
我試圖從JSON
結果檢索BUSINESSNAME和城市。
(searchListings-> searchListing-> businessName & searchListings-> searchListing-> city)
這是我的課程。
客戶:
public class RestClient {
public static final String BASE_URL2 = "http://pubapi.yp.com/";
private static Retrofit retrofit = null;
public static Retrofit getClient() {
if (retrofit==null) {
retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL2)
.addConverterFactory(GsonConverterFactory.create())
.build();
}
return retrofit;
}
}
接口:
public interface SearchAPIService {
@GET("/search-api/search/devapi/search?searchloc=30043&term=barbers&format=json&sort=distance&radius=1&listingcount=20&key=gmj3x7mhsh")
public
//End Url
Call<SearchList> fetchShopsList();
}
型號:
public class Search {
String businessName;
String city;
public String getName() {
return businessName;
}
public String getCity() {
return city;
}
}
型號持有名單:
public class SearchList {
List<Search> searchListing;
public List<Search> getShops() {
return searchListing;
}
}
MainActivity打印結果
public class MainActivity extends AppCompatActivity {
private static final String TAG = MainActivity.class.getSimpleName();
SearchAPIService apiSearch;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
apiSearch = RestClient.getClient().create(SearchAPIService.class);
fetchSearchList();
}
private void fetchSearchList() {
Call<SearchList> call = apiSearch.fetchShopsList();
call.enqueue(new Callback<SearchList>() {
@Override
public void onResponse(Call<SearchList> call, Response<SearchList> response) {
Log.d(TAG, "Total number fetched : " + response.body().getShops().size());
for(Search search : response.body().getShops()){
//Print out Business Name and City in log
Log.d(TAG, "Name: " + search.getName());
Log.d(TAG, "City: " + search.getCity());
}
}
@Override
public void onFailure(Call<SearchList> call, Throwable t) {
Log.e(TAG, "Got error : " + t.getLocalizedMessage());
}
});
}
}
'response.body()。getShops()''是null' – Emmanuel
那是什麼我不理解,這就是爲什麼它是空。 – teej2542