wake-up-neo.net

Das aktuelle JSON-Array (z. B. [1,2,3]) kann nicht in type deserialisiert werden

Ich habe eine Klasse wie diese;

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

Ich deserilaze so

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

meine Ausgabe scheint auf Fiddler so zu sein (string sc)

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

ich erhalte jedoch die Fehlermeldung Das aktuelle JSON-Array (z. B. [1,2,3]) kann nicht in Typ .__ deserialisiert werden, was in diesen Codes falsch ist.

danke dir .

29
sakir

Es sieht so aus, als ob der String ein Array mit einem einzelnen MyStok-Objekt enthält. Wenn Sie an beiden Enden der Eingabe eckige Klammern entfernen, sollten Sie die Daten als einzelnes Objekt deserialisieren können:

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

Sie können das Array auch in eine Liste von MyStok-Objekten deserialisieren und das Objekt am Index Null nehmen.

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

Für Array-Typ Bitte versuchen Sie es mit diesem.

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

Bitte Siehe hier für Details zur Deserialisierung von 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