将JSON反序列化为MVC模型

时间:2019-07-04 12:27:24

标签: c# json model-view-controller json.net

在我的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作为该示例是单个结果,但这也不起作用...

谢谢

1 个答案:

答案 0 :(得分:1)

我已经通过使用IList解决了自己的问题。

IList<TWCollections> collectionResults = JsonConvert.DeserializeObject<IList<TWCollections>>(jsonString);