JSON反序列化問題:無法將物件轉換為列表
在嘗試將JSON物件反序列化為自訂物件的清單時,開發人員可能會遇到錯誤:「無法將目前JSON物件(例如:{"name":"value"})反序列化為類型'System.Collections.Generic.List`1[...]'」。當JSON結構與目標反序列化類型不符時,就會出現此問題。
請考慮以下程式碼片段:
<code class="language-csharp">string jsonstring = "{\"data\":[{\"target_id\":9503123,\"target_type\":\"user\"}]}"; List<RootObject> datalist = JsonConvert.DeserializeObject<List<RootObject>>(jsonstring);</code>
在此場景中,目標反序列化類型為List
解:
為了解決這個問題,必須調整目標反序列化類型以與JSON結構對齊。
正確的反序列化:
<code class="language-csharp">RootObject data = JsonConvert.DeserializeObject<RootObject>(jsonstring);</code>
透過將反序列化類型改為RootObject,程式碼現在與JSON結構對齊,反序列化過程成功完成,不會出現上述錯誤。 如果需要存取target_id
和target_type
,則需要進一步處理data
對象,例如:data.data[0].target_id
。
以上是為什麼嘗試將物件轉換為列表時 JSON 反序列化失敗?的詳細內容。更多資訊請關注PHP中文網其他相關文章!