繁体   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