无法将当前JSON数组(例如[1,2,3])反序列化为类型

sak*_*kir 32 c# asp.net 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; }
}
Run Code Online (Sandbox Code Playgroud)

我像这样deserilala;

string sc=  e.ExtraParams["sc"].ToString();
MyStok myobj = JSON.Deserialize<MyStok>(sc);
Run Code Online (Sandbox Code Playgroud)

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

[
    {
        "STId": 2,
        "CA": "hbh",
        "Br": "jhnj",
        "SM": 20,
        "Vat": 10,
        "Price": 566,
        "BNo": "1545545"
    }
]
Run Code Online (Sandbox Code Playgroud)

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

谢谢 .

das*_*ght 70

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

MyStok myobj = JSON.Deserialize<MyStok>(sc.Substring(1, sc.Length-2));
Run Code Online (Sandbox Code Playgroud)

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

var myobjList = JSON.Deserialize<List<MyStok>>(sc);
var myObj = myobjList[0];
Run Code Online (Sandbox Code Playgroud)


Jan*_*nty 18

对于阵列类型请尝试这一个.

 List<MyStok> myDeserializedObjList = (List<MyStok>)Newtonsoft.Json.JsonConvert.DeserializeObject(sc), typeof(List<MyStok>));
Run Code Online (Sandbox Code Playgroud)

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