C# 无法将当前JSON对象反序列化为类型';System.Collections.Generic.List
我正在尝试读取JSON结果 这是我的JsonResultC# 无法将当前JSON对象反序列化为类型';System.Collections.Generic.List,c#,json,json.net,C#,Json,Json.net,我正在尝试读取JSON结果 这是我的JsonResult public class JsonResult { public string ResponseStatus; public string Status; public string Remarks; public string ErrorCode; public List<Data> data; } public class Data { publi
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;
}
这是我读取结果的代码
var result = JsonConvert.DeserializeObject<List<JsonResult>>(retPKT);
var result=JsonConvert.DeserializeObject(retPKT);
但是有例外
无法反序列化当前JSON对象(例如{“名称”:“值”})
输入类型“System.Collections.Generic.List`1[JsonResult+Data]”,因为
该类型需要一个JSON数组(例如[1,2,3])来反序列化
正确地要修复此错误,请将JSON更改为JSON数组
(例如[1,2,3])或更改反序列化类型,使其成为正常类型
.NET类型(例如,不是integer之类的基元类型,也不是集合
可以从JSON反序列化的类型(如数组或列表)
对象还可以将JsonObjectAttribute添加到类型以强制它
从JSON对象反序列化。路径“数据状态”,第1行,
第118位
如何解决这个问题?在Json字符串中,数据是一个对象,而不是数组。因此,您的JsonResult类应该如下所示:
public class JsonResult
{
public string ResponseStatus;
public string Status;
public string Remarks;
public string ErrorCode;
public Data Data;
}
在Json字符串中,数据是一个对象,而不是数组。因此,您的JsonResult类应该如下所示:
public class JsonResult
{
public string ResponseStatus;
public string Status;
public string Remarks;
public string ErrorCode;
public Data Data;
}
如果您想发送数据列表
list
,那么在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":""}
到
如果您想发送数据列表
list
,那么在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":""}
到
数据不是列表,而是对象。您的模型应该如下所示(仅修改了JsonResult):
希望有帮助 数据不是列表,而是对象。您的模型应该如下所示(仅修改了JsonResult):
希望有帮助 要自己达到此解决方案:验证JSON以确保其有效(),然后将完整的JSON字符串输入以构建类。要自己达到此解决方案:验证JSON以确保其有效(),然后将完整的JSON字符串输入以构建类。
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; }
}