com.google.gson.JsonSyntaxException:java.lang.IllegalStateException:应为BEGIN_数组,但在第1行第1258列为BEGIN_对象

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

尝试从JSON反序列化时,我遇到以下错误:

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>

    ...
}