處理JSON反序列化錯誤:列表類型與非數組JSON資料
使用Newtonsoft的JsonConvert反序列化JSON資料時,開發人員經常遇到錯誤:「無法將目前JSON物件反序列化為類型'System.Collections.Generic.List`1[T]',因為該類型需要一個JSON數組才能正確反序列化。
此錯誤發生在目標資料類型為列表(錯誤訊息中的'List`1'所示),但JSON資料不是數組時。要解決此問題,您需要修改JSON資料以符合預期的陣列格式,或調整目標資料類型以接受非陣列格式。
JSON資料轉換
如果您的JSON資料實際上是一個數組,但未以此形式表示,則需要在反序列化之前將其轉換為數組格式。您可以為此目的使用JSON.NET的JObject或JArray類別。例如,如果您的JSON資料採用以下格式:
<code>{"data":[{"target_id":9503123,"target_type":"user"}]}</code>您可以使用以下程式碼將其轉換為陣列格式:
<code>JObject obj = JObject.Parse(jsonstring); jsonstring = obj["data"].ToString();</code>這會將JSON資料轉換為以下數組格式:
<code>[{"target_id":9503123,"target_type":"user"}]</code>
調整目標資料型別
如果您的JSON資料不是數組,則需要調整目標資料類型以接受非數組格式。在這種情況下,您應將List類型變更為RootObject類型。例如:
以上是當列表類型需要非數組 JSON 資料時,為什麼 JSON 反序列化會失敗?的詳細內容。更多資訊請關注PHP中文網其他相關文章!