簡體   English   中英

Android- Retrofit-java.lang.NullPointerException:嘗試調用虛擬方法

[英]Android- Retrofit - java.lang.NullPointerException: Attempt to invoke virtual method

我正在嘗試使用android中的Retrofit解析以下JSON。

{
"message": false,
"suggestions": false,


"vehicle": {
    "parked": true,
    "uin": "15",
    "vin": "WBAEG1312MCB42267",
    "make": "Bmw",
    "model": "E8SERIES",
    "color": "Blue",
    "year": "1991",
    "package": "Premium",
    "options": "",
    "interior": "Color: Cream, Type:Leather",
    "exterior": "",
    "activity": "Parked",
    "username": "Dhruba Sarma",
    "timestamp": "04-Sep, 00:35",
    "latlng": {
      "lat": 12.899270164792,
      "lng": 77.646080134509
    }
  }
}

我創建了如下的模型類-VehicleModel.java

public class VehicleModel {

    @SerializedName("message")
    @Expose
    private boolean message;
    @SerializedName("suggestions")
    @Expose
    private boolean suggestions;
    @SerializedName("vehicle")
    @Expose
    private Vehicle vehicle;

    public boolean isMessage() {
        return message;
    }

    public boolean isSuggestions() {
        return suggestions;
    }

    public Vehicle getVehicle() {
        return vehicle;
    }
}

Vehicle.java

public class Vehicle {

    @SerializedName("parked")
    @Expose
    private boolean parked;
    @SerializedName("uin")
    @Expose
    private String uin;
    @SerializedName("vin")
    @Expose
    private String vin;
    @SerializedName("make")
    @Expose
    private String make;
    @SerializedName("model")
    @Expose
    private String model;
    @SerializedName("color")
    @Expose
    private String color;
    @SerializedName("year")
    @Expose
    private String year;
    @SerializedName("package")
    @Expose
    private String _package;
    @SerializedName("options")
    @Expose
    private String options;
    @SerializedName("interior")
    @Expose
    private String interior;
    @SerializedName("exterior")
    @Expose
    private String exterior;
    @SerializedName("activity")
    @Expose
    private String activity;
    @SerializedName("username")
    @Expose
    private String username;
    @SerializedName("timestamp")
    @Expose
    private String timestamp;
    @SerializedName("latlng")
    @Expose
    private LatLng latlng;

    public boolean isParked() {
        return parked;
    }

    public String getUin() {
        return uin;
    }

    public String getVin() {
        return vin;
    }

    public String getMake() {
        return make;
    }

    public String getModel() {
        return model;
    }

    public String getColor() {
        return color;
    }

    public String getYear() {
        return year;
    }

    public String getPackage() {
        return _package;
    }

    public String getOptions() {
        return options;
    }

    public String getInterior() {
        return interior;
    }

    public String getExterior() {
        return exterior;
    }

    public String getActivity() {
        return activity;
    }

    public String getUsername() {
        return username;
    }

    public String getTimestamp() {
        return timestamp;
    }

    public LatLng getLatlng() {
        return latlng;
    }
}

LatLng.java

public class LatLng {

    @SerializedName("lat")
    @Expose
    private String lat;
    @SerializedName("lng")
    @Expose
    private String lng;

    public String getLat() {
        return lat;
    }

    public String getLng() {
        return lng;
    }
}

VehicleJSONResponse.java

public class VehicleJSONResponse {

    private VehicleModel vehicle;

    public VehicleModel getVehicleJSONResponse() {
        return vehicle;
    }
}

這就是我解析JSON

Retrofit retrofit = new Retrofit.Builder().baseUrl(baseurl)
            .addConverterFactory(GsonConverterFactory.create()).build();

    VehicleRequestInterface request = retrofit.create(VehicleRequestInterface.class);
    Call<VehicleJSONResponse> call = request.getVehicleJSON(url);
    call.enqueue(new Callback<VehicleJSONResponse>() {
        @Override
        public void onResponse(Call<VehicleJSONResponse> call, Response<VehicleJSONResponse> response) {

            VehicleJSONResponse jsonResponse = response.body();

            vehicleData = jsonResponse.getVehicleJSONResponse();`

現在的問題是,當我嘗試使用以下代碼檢索數據時,得到的消息和建議的值符合預期。 但是我得到vehicle=null代碼以檢索數據vehicleData.getVehicle() >>>始終為null vehicleData.isMessage() >>這是預期的錯誤。

有人可以在這里幫助我,並建議我做錯了什么嗎?

您正在從服務器獲取VehicleModel json的響應。 所以更換VehicleJsonResponseVehicleRequestInterfaceVehicleModel並預期它應該工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM