Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法将当前JSON对象反序列化为类型';System.Collections.Generic.List_C#_Json_Json.net - Fatal编程技术网

C# 无法将当前JSON对象反序列化为类型';System.Collections.Generic.List

C# 无法将当前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

我正在尝试读取JSON结果

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

}
这是我读取结果的代码

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