web-dev-qa-db-fra.com

Impossible de désérialiser le tableau JSON actuel (par exemple, [1,2,3]) en type

J'ai un cours comme celui-ci;

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; }
}

Je deserilaze comme ça;

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

ma sortie semble aimer ceci (string sc) sur fiddler

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

mais je reçois le message d'erreur Impossible de désérialiser le tableau JSON actuel (par exemple, [1,2,3]) en type

je vous remercie .

29
sakir

Il semble que la chaîne contienne un tableau avec un seul objet MyStok. Si vous supprimez les crochets aux deux extrémités de l'entrée, vous devriez pouvoir désérialiser les données en tant qu'objet unique:

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

Vous pouvez également désérialiser le tableau dans une liste d'objets MyStok et prendre l'objet à l'index zéro.

var myobjList = JSON.Deserialize<List<MyStok>>(sc);
var myObj = myobjList[0];
60
dasblinkenlight

Pour le type de tableau, essayez celui-ci.

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

S'il vous plaît Voir ici pour plus de détails pour désérialiser Json

18
Janty
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<List<CategoryModel>>(jsonString);
1
Aditi_Systematix