2016-09-14 4 views
0

다음 JSON을 android에서 추가 기능을 사용하여 구문 분석하려고합니다.Android - Retrofit - NullPointerException : 가상 메소드 호출 시도

{ 
"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; 
    } 
} 
내가 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();` 

를 분석하고 어떻게 여기

VehicleJSONResponse.java

public class VehicleJSONResponse { 

    private VehicleModel vehicle; 

    public VehicleModel getVehicleJSONResponse() { 
     return vehicle; 
    } 
} 

그리고 내가 코드 아래 사용하여 데이터를 검색 할 때 지금 문제가있다, 난의 가치를 메시지 및 제안을 예상대로. 하지만 내가 얻을 vehicle=null 데이터를 검색하는 코드 vehicleData.getVehicle() >>> 항상 null입니다 vehicleData.isMessage() >> 예상대로 false입니다.

아무도 나를 여기 도와 줄 수 있고 내가 뭘 잘못하고 있다고 제안 할 수 있습니까?

+0

'VehicleJSONResponse' 왜이 클래스입니까? 당신은 그것이 당신의 json 응답에서 어디에 매핑한다고 생각합니까? – njzk2

답변

1

서버에서 VehicleModeljson의 응답이 표시됩니다. 그러므로 VehicleRequestInterfaceVehicleJsonResponseVehicleModel으로 바꾸면 예상대로 작동합니다.

관련 문제