【问题标题】:Deserialising JSON into MVC Model [duplicate]将 JSON 反序列化为 MVC 模型 [重复]
【发布时间】: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


【解决方案1】:

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

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

【讨论】:

  • 您解决了自己的问题,不是使用IList,而是没有反序列化为accountCollections
  • 我在原始答案中解释过,我之前曾尝试过 accountCollections 和 TWCollections,但我已经更改了 accountCollections 以反映 IList,因此它可以工作
猜你喜欢
  • 1970-01-01
  • 2012-06-04
  • 2019-06-05
  • 2017-04-13
  • 1970-01-01
  • 2020-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多