This question already has answers here:
Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 35
(2个答案)
4年前关闭。
尝试从JSON反序列化时出现以下错误:
现在,您还具有:
您是否有可能在其中一个类中意外地将
编辑
回应您的评论。您发布的
那就是你的错误。
要解决此问题,您要么需要更改JSON,以使
或更改
另外,请使用Java命名约定。变量(包括类字段)和方法应为
最好还是让班级成员
(2个答案)
4年前关闭。
尝试从JSON反序列化时出现以下错误:
com.google.gson.JsonSyntaxException: java.lang.IllegalStateException:
Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 1258
最佳答案
由于您尚未将源发布到ToggleProcessedImage
(或它本身可能包含的任何对象),因此我无法真正告诉您您的JSON为什么不反序列化。 Gson需要一个用于特定字段的数组,但JSON似乎包含该字段的对象。
我查看了JSON中的列1258(发生错误的地方),发现它是:
"MeasuredBox": {
...
}
现在,您还具有:
"MeasuredBoxes": [
...
]
您是否有可能在其中一个类中意外地将
measuredBox
字段的类型定义为List<MeasuredBox>
或MeasuredBox[]
而不是仅仅MeasuredBox
?也许您将其与名称相似的字段measuredBoxes
混淆了。编辑
回应您的评论。您发布的
MeasuredBoxes
是:public class MeasuredBoxes {
public Box Region;
public List<Integer> LayerBottoms;
public List<Measurement> Measurements;
public List<Box> MeasuredBox; //<--- this is the source of your error
...
}
那就是你的错误。
MeasuredBoxes
类需要Box
属性的MeasuredBox
对象列表。但是,您提供的JSON仅具有一个直接表示为对象的Box
。要解决此问题,您要么需要更改JSON,以使
MeasuredBox
是一个数组:"MeasuredBox": [{
...
}]
或更改
MeasuredBoxes
类,以使MeasuredBox
字段的类型为Box
而不是List<Box>
:public class MeasuredBoxes {
public Box Region;
public List<Integer> LayerBottoms;
public List<Measurement> Measurements;
public Box MeasuredBox; //<--- this is Box now instead of List<Box>
...
}
另外,请使用Java命名约定。变量(包括类字段)和方法应为
namedLikeThis
(即驼峰式)和NotLikeThis
,但类应为NamedLikeThis
。最好还是让班级成员
private
;将它们设置为public
是例外,而不是规则。10-08 13:25