簡體   English   中英

使用GSON進行JSON內部字段解析

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM