2017-02-27 85 views
0

我想讀取我的JSON結果。無法將當前JSON對象反序列化爲類型'System.Collections.Generic.List

這裏是我的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; 

} 

這裏是我的JSON結果

{ 
"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":"" 
    } 
} 

這裏是我的代碼讀取結果

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

,但得到的異常..

無法反序列化當前的JSON對象(例如, {「name」:「value」}) 類型爲'System.Collections.Generic.List`1 [JsonResult + Data]',因爲 該類型需要JSON數組(例如[1,2,3])來反序列化 正確。要解決這個錯誤,可以將JSON更改爲JSON數組(例如[1,2,3]),或者更改反序列化類型,以便它是一個正常的 .NET類型(例如,不是基本類型,如整數,而不是集合 類型類似於數組或列表),可以從JSON 對象反序列化。 JsonObjectAttribute也可以添加到類型中,以強制它從一個JSON對象反序列化。路徑'Data.Status',第1行, 位置118.

我該如何解決這個問題?

回答

5

在你的Json字符串中,Data是一個對象,而不是一個數組。所以,你的JsonResult類應該是這樣的:

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

要自己達成此解決方案:驗證您的JSON以確保其有效(http://jsonlint.com),然後將完整的JSON字符串輸入到http://json2csharp.com以爲您構建類。 –

2

如果您要發送的數據List<Data>的名單,然後在JSON它應該是在陣列

形式

更改以下JSON內容

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

"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

數據不是列表,它是一個對象。你的模型應該是這樣的(只有JsonResult被修改):

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

希望它有幫助!

相關問題