JSON对象没有使用Gson映射到Java对象

时间:2017-05-01 11:40:37

标签: java android gson

这是来自服务器的我的JSON对象:

"driverInfo": {
  "rideTime": null,
  "rideId": 1105,
  "driverProfile": {
    "userId": 9,
    "firstname": "nawaraj",
    "lastname": "shrestha",
    "phone": "9841444444",
    "email": null,
    "location": {
      "lat": 27.7131382,
      "lng": 85.3255354
    },
    "vehicleType": "Taxi",
    "vehicleNo": "4556",
    "rating": 3.3,
    "imageName": "NAbin25",
    "driverId": 4
  },
  "destinationLocation": null,
  "myLocation": {
    "lat": 27.7131382,
    "lng": 85.3255354
  },
  "otpCode": "7857",
  "trackRideUrl": null,
  "customerId": 1
}

这是我的java类

public class RideDetails implements Serializable{
@Nullable
private String rideTime;
private Integer rideId;
private DriverProfile driverProfile;
@Nullable
private LatLng destinationLocation;
@Nullable
private LatLng myLocation;
private String otpCode;
private String trackRideUrl;
private Integer customerId;

public Integer getRideId() {
    return rideId;
}

public Integer getCustomerId() {
    return customerId;
}

public void setCustomerId(Integer customerId) {
    this.customerId = customerId;
}

public void setRideId(Integer rideId) {
    this.rideId = rideId;
}

public DriverProfile getDriverProfile() {
    return driverProfile;
}

public void setDriverProfile(DriverProfile driverProfile) {
    this.driverProfile = driverProfile;
}

@Nullable
public LatLng getDestinationLocation() {
    return destinationLocation;
}

public void setDestinationLocation(@Nullable LatLng destinationLocation) {
    this.destinationLocation = destinationLocation;
}

@Nullable
public LatLng getMyLocation() {
    return myLocation;
}

public void setMyLocation(@Nullable LatLng myLocation) {
    this.myLocation = myLocation;
}

@Nullable
public String getRideTime() {
    return rideTime;
}

public void setRideTime(@Nullable String rideTime) {
    this.rideTime = rideTime;
}

public String getOtpCode() {
    return otpCode;
}

public void setOtpCode(String otpCode) {
    this.otpCode = otpCode;
}

public String getTrackRideUrl() {
    return trackRideUrl;
}

public void setTrackRideUrl(String trackRideUrl) {
    this.trackRideUrl = trackRideUrl;
}
}

要映射对象..我像这样使用Gson:

Gson gson = new Gson();
RideDetails rideDetails = gson.fromJson(jsonObject.toString(),RideDetails.class);

LatLng之外,JSON对象的所有细节都映射到Java类。 虽然LatLng在服务器的JSON对象中有值。映射后,所有三个LatLnglocationdestinationLocationmyLocation都有值{lat:0.0,lng:0.0}。可能是什么问题?

3 个答案:

答案 0 :(得分:0)

位置应该是DriverProfile对象的一部分。

答案 1 :(得分:0)

Google APIs中的LatLng对象确实包含latlng参数。这意味着你的对象不会映射。

使用正确的参数创建自己的Location对象,以确保正确的映射。或者确保json有latitudelongitude而不是latlng,因此它可以自动映射到LatLng对象。

此外,层次结构错误。 myLocationdestinationLocationlocation应映射到DriverProfile下。

答案 2 :(得分:0)

LatLng类的字段latitudelongitude与您的服务器作为JSON的一部分发送的字段latlng不同。