JSON反序列化失敗:無法將JSON物件解析為物件清單
在嘗試將JSON字串反序列化為自訂物件清單時,您可能會遇到錯誤:「無法將目前JSON物件(例如:{"name":"value"}
)反序列化為類型'System.Collections.Generic .List1',因为该类型需要一个JSON数组(例如:
[1,2,3]`)才能正確反序列化」。
此錯誤是由於JSON結構與預期格式不符所造成的。 JSON數組用於表示列表或集合,而JSON物件用於表示鍵值對。在本例中,JSON字串包含單一對象,其「data」屬性是一個物件陣列。要解決此問題,您需要將JSON字串反序列化為適當的類別結構。
理解JSON結構
提供的JSON字串結構如下:
<code class="language-json">{"data":[{"target_id":9503123,"target_type":"user"}]}</code>
它包含一個單一對象,其「data」屬性是一個物件陣列。
修正反序列化程式碼
導致錯誤的程式碼行是:
<code class="language-csharp">List<rootobject> datalist = JsonConvert.DeserializeObject<list>(jsonstring);</code>
此行嘗試將JSON字串反序列化為RootObject物件的清單。但是,JSON字串包含單一對象,而不是對象列表。若要修復此錯誤,請將程式碼變更為:
<code class="language-csharp">RootObject datalist = JsonConvert.DeserializeObject<rootobject>(jsonstring);</code>
此更正後的程式碼將JSON字串反序列化為單一RootObject對象,該物件與JSON結構正確匹配。
結論
透過確保程式碼與JSON結構正確匹配,您可以解決「無法反序列化目前JSON物件」錯誤。了解JSON字串的預期格式對於成功反序列化至關重要。
以上是為什麼我的 JSON 反序列化失敗並顯示'無法反序列化當前 JSON 物件...”?的詳細內容。更多資訊請關注PHP中文網其他相關文章!