com.google.gson.JsonSyntaxException:java.lang.IllegalStateException:应为BEGIN_数组,但在第1行第1258列为BEGIN_对象
尝试从JSON反序列化时,我遇到以下错误:com.google.gson.JsonSyntaxException:java.lang.IllegalStateException:应为BEGIN_数组,但在第1行第1258列为BEGIN_对象,java,gson,Java,Gson,尝试从JSON反序列化时,我遇到以下错误: com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 1258 由于您尚未将源代码发布到ToggleProcesseImage(或它本身可能包含的任何对象),因此我无法真正告诉您为什么JSON没有反序列化。Gson期望为特定字段提供一个数组,但J
com.google.gson.JsonSyntaxException: java.lang.IllegalStateException:
Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 1258
由于您尚未将源代码发布到
ToggleProcesseImage
(或它本身可能包含的任何对象),因此我无法真正告诉您为什么JSON没有反序列化。Gson期望为特定字段提供一个数组,但JSON似乎包含该字段的一个对象
我查看了JSON中的第1258列(发生错误的地方),发现它是:
"MeasuredBox": {
...
}
现在,在前面,您还有:
"MeasuredBoxes": [
...
]
是否可能在其中一个类中,您意外地将measuredBox
字段的类型定义为List
或measuredBox[]
,而不仅仅是measuredBox
?也许您将其与类似命名的字段measuredboxs
混淆了
编辑
回应你的评论。您发布的measuredboxs
是:
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
...
}
或者更改measuredboxs
类,使MeasuredBox
字段的类型为Box
,而不是列表
:
公共类测量框{
公共箱区;
公共列表分层单元;
公开计量清单;
public Box MeasuredBox;//您检查过JSON是否有效吗?l_SparamProcesseImage
包含什么?它是否与ToggleProcesseImage
的结构匹配?请发布您试图反序列化的JSON,以及ToggleProcesseImage
的源代码。是的,我已经发布了l_sParamProcessedImage。是的,它与ToogleProcessedImage的源代码相匹配不是因为我不相信你,而是它有助于更多地关注它:)-你也可以发布ToggleProcessedImage
的源代码吗?在MasuredBoxes中,我有一个区域、LayerBottom和一个MeasuredBox列表,所以我不会感到困惑。会有一个MeasuredBox列表@PSDebugger请发布源ToggleProcesseImage
以及它还使用的任何内部对象。否则,我们只是在玩猜测游戏。公用框区域;//必需的公用列表LayerBottoms;//必需的公用列表度量;//必需的公用列表度量框;//必需的公用列表度量框
"MeasuredBox": [{
...
}]
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>
...
}