[英]com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 2
[英]GSON : java.lang.IllegalStateException: Expected BEGIN_OBJECT but was BEGIN_ARRAY
我正在嘗試使用gson解析以下json字符串,並且遇到此異常。
[{"target":"target 1","datapoints":[[12345678, null],[3456123,null],[908976712,12345677.0],[67543678, 4567.0]]}, {"target":"target 2","datapoints":[[12345678, 50215.0],[345645123,null],[908976712,null],[67543678, 4567.0]]}]
這是我的模型課:公制
public class Metric implements Serializable{
String target;
Datapoint[] datapoints;
//setters and getters
}
數據點
public class Datapoint implements Serializable{
long time;
long count;
//setters and getters
}
這就是我試圖使用gson解析json的方式
Gson gson = new GsonBuilder().create();
JsonArray array = jsonParser.parse(jsonString).getAsJsonArray();
for (JsonElement element : array) {
Metric metric = gson.fromJson(element, Metric.class);
//do something with the metric object. probably read all the datapoints and display
}
這是拋出的異常
com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was BEGIN_ARRAY
很明顯的例外是,它期望一個對象(可能是數據點),但是遇到了一個數組。 我確定我的模型類是導致問題的那一個,但是我不明白我的模型類應該如何解析該json而不會失敗。
您的datapoints
元素不是JSON對象,它們是JSON數組,看似由JSON數字和JSON空值組成。
[
12345678,
null
],
默認情況下,您將無法將其映射到Datapoint
POJO。 您可以改為
Integer[][] datapoints;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.