无法将当前JSON数组(例如)反序列化为类型

我有这样的课;

public class MyStok { public int STId { get; set; } public int SM { get; set; } public string CA { get; set; } public string Br { get; set; } public string BNo { get; set; } public decimal Vat { get; set; } public decimal Price { get; set; } } 

我像这样deserilala;

 string sc= e.ExtraParams["sc"].ToString(); MyStok myobj = JSON.Deserialize(sc); 

我的输出似乎喜欢这个(字符串sc)在fiddler上

 [ { "STId": 2, "CA": "hbh", "Br": "jhnj", "SM": 20, "Vat": 10, "Price": 566, "BNo": "1545545" } ] 

但我得到错误无法将当前JSON数组(例如[1,2,3])反序列化为那些代码中的错误类型。

谢谢 。

看起来该字符串包含一个包含单个MyStok对象的数组。 如果从输入的两端删除方括号,则应该能够将数据反序列化为单个对象:

 MyStok myobj = JSON.Deserialize(sc.Substring(1, sc.Length-2)); 

您还可以将数组反序列化为MyStok对象列表, MyStok对象置于索引零处。

 var myobjList = JSON.Deserialize>(sc); var myObj = myobjList[0]; 

对于arrays类型请尝试这个。

  List myDeserializedObjList = (List)Newtonsoft.Json.JsonConvert.DeserializeObject(sc), typeof(List)); 

有关将Json反序列化的详细信息,请参阅此处

 HttpClient webClient = new HttpClient(); Uri uri = new Uri("your url"); HttpResponseMessage response = await webClient.GetAsync(uri) var jsonString = await response.Content.ReadAsStringAsync(); var objData = JsonConvert.DeserializeObject>(jsonString);