【发布时间】:2017-05-02 01:15:59
【问题描述】:
我需要解析一个包含一长串客户的 JSON 文件。在 JSON 文件中,每个客户可能有一个 id 作为字符串:
{
"cust_id": "87655",
...
},
或者几个id作为一个数组:
{
"cust_id": [
"12345",
"45678"
],
...
},
Customer 类如下:
public class Customer {
@SerializedName("cust_id")
@Expose
private String custId;
public String getCustId() {
return custId;
}
public void setCustId(String custId) {
this.custId = custId;
}
}
我使用 Gson 解析 JSON:
Gson gson = new Gson()
Customers customers1 = gson.fromJson(json, Customers.class)
当它试图解析数组时,它会以com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected a string but was BEGIN_ARRAY 失败。
失败的原因很清楚。
我的问题:鉴于 我无法更改 json 文件结构,处理这两种情况的最佳方法是什么(当 id 是一个字符串和一个字符串数组时)?? p>
【问题讨论】:
-
请注意,您的问题针对的是在 S.O. 非常琐碎的主题。要求以最有效的方式将单个和多个案例“对齐”到列表中,但是接受的答案以一种非常幼稚的方式做到这一点:需要构造函数,需要“级联异常展开”,忽略特定的
Gson实例配置等。