2017-02-27 5 views
0

Ich versuche, mein JSON-Ergebnis zu lesen.Das aktuelle JSON-Objekt kann nicht in Typ 'System.Collections.Generic.List' deserialisiert werden

Hier ist meine JsonResult

public class JsonResult 
    { 
    public string ResponseStatus; 
    public string Status; 
    public string Remarks; 
    public string ErrorCode; 
    public List<Data> data;  


    } 
public class Data 
{ 
    public string Status; 
    public DateTime Date; 
    public string Number; 
    public string Amount; 
    public string Balance; 
    public string TranId; 
    public string OPTId; 
    public string RefId; 

} 

Hier Ergebnis meine JSON ist

{ 
"ResponseStatus":"1", 
"Status":"Success", 
"Remarks":"Your recharge has been Pending.", 
"ErrorCode":"3", 
"Data": 
    { 
    "Status":"Pending", 
    "Date":"2017-02-23T17:22:26.2001954+05:30", 
    "Number":"9915933511", 
    "Amount":10.0, 
    "Balance":137.714, 
    "TranId":"1126887", 
    "OPTId":"","RefId":"" 
    } 
} 

Hier mein Code ist das Ergebnis

var result = JsonConvert.DeserializeObject<List<JsonResult>>(retPKT); 

Aber Erste Ausnahme ..

zu lesen

Das aktuelle JSON-Objekt kann nicht deserialisiert werden (z. {"name": "value"}) in Typ 'System.Collections.Generic.List`1 [JsonResult + Data]' weil der Typ erfordert ein JSON-Array (zB [1,2,3]) zum Deserialisieren korrekt. Um diesen Fehler zu beheben, ändern Sie entweder den JSON in ein JSON-Array (zB [1,2,3]) oder ändern Sie den deserialisierten Typ, so dass es ein normaler .NET-Typ ist (zB kein primitiver Typ wie ganze Zahlen, keine Sammlung) Typ wie ein Array oder eine Liste), die von einem JSON Objekt deserialisiert werden können. JsonObjectAttribute kann auch zu dem Typ hinzugefügt werden, um es zu erzwingen, von einem JSON-Objekt zu deserialisieren. Pfad 'Daten.Status', Zeile 1, Position 118.

Wie kann ich das beheben?

Antwort

5

In Ihrer JSON-Zeichenfolge ist Data ein Objekt, kein Array. So sollte Ihre JsonResult Klasse wie folgt aussehen:

public class JsonResult 
{ 
    public string ResponseStatus; 
    public string Status; 
    public string Remarks; 
    public string ErrorCode; 
    public Data Data;  
} 
+1

Um diese Auflösung selbst zu erreichen: Überprüfen Sie Ihr JSON, um sicherzustellen, dass es gültig ist (http://jsonlint.com) und geben Sie dann Ihre vollständige JSON-Zeichenfolge in http://json2csharp.com ein, um die Klassen für Sie zu erstellen. –

2

Wenn Sie Liste der Daten senden möchten List<Data> dann in JSON es in einer Form von Array sein sollte

Ändern Sie den folgenden JSON Inhalt

"Data": {"Status":"Pending", 
"Date":"2017-02-23T17:22:26.2001954+05:30", 
"Number":"9915933511", 
"Amount":10.0,"Balance":137.714, 
"TranId":"1126887","OPTId":"","RefId":""} 

Um
"Data": [{"Status":"Pending", 
"Date":"2017-02-23T17:22:26.2001954+05:30", 
"Number":"9915933511", 
"Amount":10.0,"Balance":137.714, 
"TranId":"1126887","OPTId":"","RefId":""}] 
0

sind Daten nicht eine Liste, ist es ein Objekt ist. Ihre Modelle sollten so aussehen (nur JsonResult ist modifiziert):

public class Data 
{ 
    public string Status { get; set; } 
    public string Date { get; set; } 
    public string Number { get; set; } 
    public double Amount { get; set; } 
    public double Balance { get; set; } 
    public string TranId { get; set; } 
    public string OPTId { get; set; } 
    public string RefId { get; set; } 
} 

public class JsonResult 
{ 
    public string ResponseStatus { get; set; } 
    public string Status { get; set; } 
    public string Remarks { get; set; } 
    public string ErrorCode { get; set; } 
    public Data Data { get; set; } 
} 

Ich hoffe, es hilft!

Verwandte Themen