我试图使用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 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
异常很明显,它期待一个对象(可能是Datapoint),但它遇到了一个数组。我确信是我的模型类导致了这个问题,但是我不明白我的模型类应该是什么样子才能解析json而不会失败。
您的datapoints
元素不是JSON对象,它们是JSON数组,似乎由JSON数字和JSON空值组成。
[
12345678,
null
],
您将无法(默认情况下)将其映射到datapoint
POJO。您可以使用
Integer[][] datapoints;
问题内容: 我在列表中仅收到一个项目时收到此错误。我在服务器端REST Web服务中使用Jersey,当List返回一个元素并且当我得到它时,我仅收到错误,但是当它包含多个元素时,它可以正常工作,这就是我的工作方式它: 为什么Jersey不发送包含一个项目的列表?这是球衣的虫子吗?有没有办法使它始终序列化为数组? 当Web服务返回0元素时,这是我的JSON数据: 当Web服务返回1元素时,这是我的
问题内容: 我在尝试将JSON解组到对象中时遇到GSON错误。错误( 应为BEGIN_OBJECT,但在第3行第22列处为STRING )指向下面输入的第3行。 我是否相对于Bean正确映射了JSON? 我输入的JSON看起来是这样的: 问题答案: 不,您没有正确映射它,因为您的json对象不是,它包含。 你可以创建一个类只是为了封装你,但它是清洁反序列化容器的使用 然后使用解析有趣的内容 并且我
我有一个JSON对象,如下所示:
我正面临一个关于GSON json到Java的问题。我在这里查了很多帖子,但我找不到我的问题的解决方案。所以我在这里列出我的问题。谢谢! 以下是我的Json数据 非常非常感谢!!
我的Retrofit2调用出现以下异常: 学分类别: