[英]JSON inner field parsing with GSON
我是JSON新手,與我研究過的任何其他解析方法相比,我都喜歡GSON Api的強大和直截了當。
我想解析一個相當復雜的JSON(使用GSON),該JSON在結構上類似於以下內容:
[
{
"name": "Steve",
"age": 42,
"description": null,
"email1": "steve@example.com",
"email2": null,
"address1": {
"type": "home",
"shippingMethod": "Charge by quantity",
"street": "Sunrise Ave",
"streetNo": 17
},
"address2": {
"type": "office",
"shippingMethod": null,
"street": "Sunset Ave",
"streetNo": 71
},
"anotherField": "another value"
},
{
"name": "Johnny",
...
"anotherField": "some other value"
}
]
我可以看到我需要用一個Client對象數組將其包裝起來,因為我的JSON以“ [”開頭,而且我還可以看到內部字段address1和address2需要另一個容器類。 這是我想出的容器:
public class Client {
String name;
int age;
String description;
String email1;
String email2;
ClientAddress address1;
ClientAddress address2;
String anotherfield;
..
getters() and setters()
public class ClientAddress {
String type;
String shippingMethod;
String street;
int streetNo;
..
getters() and setters()
}
}
我寫的獲取數據並填充包裝器字段的指令是:
Client[] clientsArray= (new Gson()).fromJson(jsonClients, Client[].class);
結果只是部分令人滿意; 我設法訪問了所有原始字段(例如name,email1 ..),但是address1和address2字段均為null。 結果是,
clientsArray[i].getAddress1().getShippingMethod();
返回一個空字符串。
我哪里做錯了?
是否有創建我所缺少的類的特定方法?
注意:從結構的角度來看,我的JSON對象是完全有效的。 如果您看到任何錯誤,那可能是因為當我手動創建上述虛擬/演示時,它們發生了滑動。
只是為了遵循GSON Collections的良好做法 ,請嘗試更改
Client[] clientsArray= (new Gson()).fromJson(jsonClients, Client[].class);
至
Type collectionType = new TypeToken<List<Client>>(){}.getType();
List<Client> clientsArray = (new Gson()).fromJson(jsonClients, collectionType);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.