我正嘗試使用google gson TypeAdapter將嵌套的JSON轉換爲嵌套的Java對象,併爲每個類實現了TypeAdapter。但我不想在單個適配器類中編寫完整的read()方法邏輯。我已經通過網絡提到了幾個問題和blog例子。但是完整的讀取邏輯是單獨的。使用gson將嵌套的JSON轉換爲嵌套的Java對象TypeAdapter
對於小型嵌套對象,它可以在單個Adapter中使用邏輯,但對於大對象(每個類中有超過10-15個字段),這並不好。
[更新]
例如JSON鍵看起來相同的類屬性,但在實際我會得到輸入爲hyphen-separated-small-case
鍵,而不是Camel case
鍵。所以我的json和java類屬性名稱將不會相同,因此我必須編寫我的定製邏輯進行映射。
E.g. 樣品的Json輸入:
{
"id": 1,
"name": "Alex",
"emailId": "[email protected]",
"address": {
"address": "21ST & FAIRVIEW AVE",
"district": "district",
"city": "EATON",
"region": "PA",
"postalCode": "18044",
"country": "US"
}
}
而Java Bean是如下:
//Employee object class
public class Employee {
private int id;
private String name;
private String emailId;
private Address address;
..
}
//Address object class
public class Address {
private String address;
private String district;
private String city;
private String region;
private String postalCode;
private String country;
..
}
我想有兩個不同的適配器和在讀集成多個適配器()方法。
public class EmployeeAdapter extends TypeAdapter<Employee> {
@Override
public void write(JsonWriter out, Employee employee) throws IOException {
//
}
@Override
public Employee read(JsonReader jsonReader) throws IOException {
//read logic for employee class using AddressAdapter for address json
}
}
public class AddressAdapter extends TypeAdapter<Address> {
@Override
public void write(JsonWriter out, Address address) throws IOException {
//
}
@Override
public Address read(JsonReader jsonReader) throws IOException {
//read logic for Address class
}
}
如何在EmployeeAdapter中使用AddressAdapter?
您是否嘗試過使用閱讀器的默認實現?或者你有特定的理由來編寫自己的適配器? –
這與傑克遜有什麼關係?請刪除標籤 –
它看起來像你只需要POJO映射,而類型適配器真的是一個矯枉過正的地方:'最終員工僱員= gson.fromJson(...,Employee.class)'似乎是完整的。 –