繁体   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