在我的MVC应用程序中,我调用一个Web服务,该服务以JSON字符串形式提供一些信息。
[{"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])转换为type 'Waste.Models.accountCollections',因为类型需要JSON 对象(例如{“ name”:“ value”})正确反序列化。
要解决此错误,请将JSON更改为JSON对象(例如 {“ name”:“ value”})或将反序列化类型更改为数组或 实现集合接口的类型(例如ICollection,IList) 例如可以从JSON数组反序列化的List。 还可以将JsonArrayAttribute添加到类型中以强制将其 从JSON数组反序列化。路径”,第1行,位置1。'
我尝试在每个属性上方的JSON对象中添加名称,但这没有用,我认为这是因为我的应用程序中的名称与JSON字符串相同...正如我所说,我还尝试了将反序列化为TWCollections作为该示例是单个结果,但这也不起作用...
谢谢
答案 0 :(得分:1)
我已经通过使用IList解决了自己的问题。
IList<TWCollections> collectionResults = JsonConvert.DeserializeObject<IList<TWCollections>>(jsonString);