【问题标题】:Failure to serialize json by JsonConvert library [duplicate]JsonConvert 库无法序列化 json [重复]
【发布时间】:2019-02-18 02:48:17
【问题描述】:

我尝试使用 JsonConvert 库序列化 JSON,但出现错误:

JsonSerializationException: 无法将当前 JSON 数组(例如 [1,2,3])反序列化为类型 'APIConsume.Models.RootObject',因为该类型需要 JSON 对象(例如 {"name":"value"})正确反序列化。 要修复此错误,请将 JSON 更改为 JSON 对象(例如 {"name":"value"})或将反序列化类型更改为数组或实现集合接口的类型(例如 ICollection、IList),例如可以从 JSON 数组反序列化。也可以将 JsonArrayAttribute 添加到类型中以强制它从 JSON 数组中反序列化。

我得到的 JSON 是:

[{"id":0,"name":"Alice","image":"alice.jpg","fromLocation":"New York","toLocation":"Beijing"},{"id":1,"name":"Bob","image":"bob.jpg","fromLocation":"New Jersey","toLocation":"Boston"},{"id":2,"name":"Joe","image":"joe.jpg","fromLocation":"London","toLocation":"Paris"}]

我的代码行给出错误是:

RootObject rootObject = JsonConvert.DeserializeObject<RootObject>(apiResponse);

RootObject类由http://json2csharp.com/生成:

public class RootObject
{
    public int id { get; set; }
    public string name { get; set; }
    public string image { get; set; }
    public string fromLocation { get; set; }
    public string toLocation { get; set; }
}

请帮忙?

【问题讨论】:

  • 试试List&lt;RootObject&gt; rootObject = JsonConvert.DeserializeObject&lt;RootObject&gt;(apiResponse);
  • 看起来像一个数组,试试 List E: 1 seconds too slow :')
  • @VDWWD List rootObject = JsonConvert.DeserializeObject(apiResponse);给出编译时错误。

标签: c# asp.net json


【解决方案1】:

试试这个:

var rootObject = JsonConvert.DeserializeObject<List<RootObject>>(apiResponse);

【讨论】:

  • 谢谢,它成功了。 json2csharp.com 一直有效,但这次它给我带来了错误的课程。
  • 它实际上是正确的类,但你必须知道如果你的源是一个X数组,那么你必须反序列化成List&lt;X&gt; X[](两者都可以)。 json2csharp 不会强迫你做出任何选择。
猜你喜欢
  • 1970-01-01
  • 2018-09-25
  • 2020-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多