簡體   English   中英

Newtonsoft.Json反序列化集合

[英]Newtonsoft.Json Deserialize Collection

第三方供應商擁有我正在使用的一系列端點,它們具有以下結構:

[
     {
          "Id" : 117,
          "Name" : "Example"
     },

     {
          "Id" : 118,
          "Name" : "Sample"
     },
]

我創建了一個對象結構:

public class RootObject<TType>
{
     public TType[] ApiModels { get; set; }
}

public class Sample
{
     public int Id { get; set; }
     public string Name { get; set; }
}

但是當我去反序列化時,我會做:

JsonConvert.DeserializeObject<RootObject<Sample[]>>(...);

我收到一個錯誤,無法反序列化當前JSON數組? 為什么? 如果我做動態運動,我可以遍歷一切,我認為我做的事情很愚蠢。

更新錯誤:

發生一個或多個錯誤。 (無法將當前的JSON數組(例如[1,2,3])反序列化為類型,因為該類型需要JSON對象(例如{“ name”:“ value”})才能正確地反序列化。要解決此錯誤,請更改JSON JsonArrayAttribute設置為JSON對象(例如{“ name”:“ value”})或將反序列化的類型更改為數組,或者將實現集合列表的類型(例如ICollection,IList)(例如可以從JSON數組反序列化的List)。也可以添加到該類型以強制其從JSON數組反序列化。路徑”,第1行,位置1。)

JSON數組對應於C#中的List<T> ,因此,應序列RootObject<Sample[]> List<Sample> ,而不是序列RootObject<Sample[]> List<Sample>

JsonConvert.DeserializeObject<List<Sample>>(...);

在這里使用RootObject<Sample[]>是錯誤的,因為:

  • JSON的根是一個數組,而不是一個對象
  • RootObject<Sample[]>將具有類型為Samples[][]ApiModels屬性,這顯然不是您想要的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM