无法将当前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);