既然你的避風港沒有公佈源代碼到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
對象列表。但是,您提供的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
是例外,而不是規則。
您是否檢查過JSON以查看它是否有效? 'l_sParamProcessedImage'包含什麼?它與「ToggleProcessedImage」的結構相匹配嗎?請發佈您試圖反序列化的JSON,以及'ToggleProcessedImage'的源代碼。 –
是的,我發佈了l_sParamProcessedImage的值。是的,它匹配toogleProcessedImage的來源 – PSDebugger
不是我不相信你,但它有助於有更多的目光:) - 你可以發佈'ToggleProcessedImage'的來源嗎? –