首頁 >後端開發 >C++ >當列表類型需要非數組 JSON 資料時,為什麼 JSON 反序列化會失敗?

當列表類型需要非數組 JSON 資料時,為什麼 JSON 反序列化會失敗?

Linda Hamilton
Linda Hamilton原創
2025-01-08 06:17:42885瀏覽

Why Does JSON Deserialization Fail When a List Type Expects Non-Array JSON Data?

處理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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn