如何使用Gson.fromJson从非嵌套json获取嵌套对象

时间:2015-08-13 04:59:34

标签: android gson

有一个带有下降位置的json,拾取位置和订单信息,下拉/拾取位置没有嵌套,但我想反序列化为一个订单对象,它嵌套了拾取位置模型和下降位置模型。我想用Gson.fromJson()自动反序列化。我怎样才能达到它?

非嵌套json如下:

{
    dropoffAddress = "Changsha Railway Station";
    dropoffCity = Changsha;
    dropoffLoc =     (
        "113.012966",
        "28.195013"
    );
    dropoffLocation = "Changsha Railway Station Changsha";
    dropoffState = Hunan;
    orderNo = 3467;
    orderStatus = 0;
    orderTime = "2015-07-09T01:08:42.089Z";
    pickupAddress = "Yanzishan Rd";
    pickupCity = Changsha;
    pickupState = Hunan;
}

订单型号:

public class OrderModel {
    String orderNo;
    String orderTime;
    int OrderStatus;
    AddressModel pickupAddress;
    AddressModel dropoffAddress;
}

AddressModel:

public class AddressModel {
    String address;
    String city;
    String location;
    String state;
    LatLng loc;
}

1 个答案:

答案 0 :(得分:0)

最后,我以一种艰难的方式实施了它。

json对象的所有字段都映射到model,然后我编写了一个getPickupAddress()和getDropoffAddress()来获取相关的属性。代码如下。

public class OrderModel {
    String orderNo;
    String orderTime;
    int OrderStatus;
    String dropoffAddress;
    String dropoffCity;
    Double[] dropoffLoc;
    ...
    String pickupAddress;
    String pickupCity;
    Double[] pickupLoc;
    AddressModel pickupAddressModel;
    AddressModel dropoffAddressModel;

    public AddressModel getPickupAddressModel() {
        AddressModel addressModel = new AddressModel();
        addressModel.setAddress = this.pickupAddress;
        addressModel.setCity = this.pickupCity;
        ...
        return addressModel;
    }

    Public AddressModel getDropoffAddressModel() {
        AddressModel addressModel = new AddressModel();
        addressModel.setAddress = this.dropoffAddress;
        addressModel.setCity = this.dropoffCity;
        ...
        return addressModel;
    }
}