【发布时间】:2019-07-04 12:27:24
【问题描述】:
在我的 MVC 应用程序中,我调用了一个以 JSON 字符串形式提供一些信息的 Web 服务。
[{"createdDate":"28/04/2019 09:55:54","round":"T4","colType":"7","colCount":"2","Day":"0001000"}]
在我的应用程序中,我有一个与此字符串具有相同属性的模型。
public class TWCollections
{
public string createdDate { get; set; }
public string round { get; set; }
public string colType { get; set; }
public string colCount { get; set; }
public string Day { get; set; }
}
我最初尝试将 JSON 反序列化到这个模型中,直到我意识到我可能会得到多个结果,所以我创建了以下...
public class accountCollections
{
public List<TWCollections> cols { get; set; }
}
在我的代码中,我尝试使用以下代码将 JSON 对象反序列化到模型中:
accountCollections collectionsList = JsonConvert.DeserializeObject<accountCollections>(jsonString));
但是我得到了错误...
Newtonsoft.Json.JsonSerializationException: '无法反序列化 当前 JSON 数组(例如 [1,2,3])转换为类型 'Waste.Models.accountCollections' 因为该类型需要 JSON 对象(例如 {"name":"value"})正确反序列化。
要修复此错误,请将 JSON 更改为 JSON 对象(例如 {"name":"value"}) 或将反序列化类型更改为数组或 实现集合接口的类型(例如 ICollection、IList) 比如可以从 JSON 数组反序列化的 List。 JsonArrayAttribute 也可以添加到类型中以强制它 从 JSON 数组反序列化。路径'',第 1 行,位置 1。'
我尝试从每个属性上方的 JSON 对象中添加名称,但这不起作用,我认为这是因为我的应用程序中的名称与 JSON 字符串相同...正如我所说,我也尝试反序列化为 TWCollections该示例是单个结果,但这也不起作用...
谢谢
【问题讨论】:
-
你能提供你正在反序列化的完整 JSON 吗?
-
我已经完全按照从 Web 服务返回的内容(上图)提供了它。我已将其反序列化为一个 var 用于测试目的,并且可以看到数据在那里。
-
你有
[...]json 数组而不是{"cols" : [...]}json 对象......所以显然你应该将它直接反序列化到你的模型类列表 -
我们要求
jsonString -
@sriharsha 返回的变量 jsonString 是.... [{"createdDate":"28/04/2019 09:55:54","round":"T4","colType ":"7","colCount":"2","Day":"0001000"}]
标签: c# json model-view-controller json.net