无法反序列化当前 JSON 数组(例如 [1,2,3])。 C#,无法找出错误

2023-12-03

我正在尝试从以下 json 数据中检索所有名称并将其放入文本框中。

这是 json 数据,我缩短了一些值以使其更易于阅读,但这不会影响问题。

    [{
"id": "LEA",
"name": "Limited Edition Alpha",
"block": null,
"type": "Core",
"description": "The name Alpha refers to the first print run of the \n  original Magic: The Gathering Limited Edition, the first Magic: The Gathering \n  card set. It premiered in a limited release at Origins Game Fair in 1993, with \n  a general release that August. Its print run of 2.6 million cards sold out very quickly and was replaced by Limited Edition's Beta print run. Limited Edition cards have no expansion symbol, no copyright date, no trademark symbols, although they do list the art credits at the bottom of the card.",
"common": 74,
"uncommon": 95,
"rare": 116,
"mythicRare": 0,
"basicLand": 10,
"total": 295,
"releasedAt": "1993-08-05",
"cardIds": [
  226,
  275,
  245
]  },{
"id": "LEB",
"name": "Limited Edition Beta",
"block": null,
"type": "Core",
"description": "Limited Edition Beta or just Beta refers to the second \n  print run of the original Magic: The Gathering Limited Edition, the first \n  Magic: The Gathering card set. It was released as soon as Wizards of the \n  Coast could afford to pay for the rest of the print run. The company took \n  advantage of the fact that the first edition print run had been split to \n  correct some minor problems in the rules and fix some errors on the cards. \n  Clarifications were made to the rulebook, and Richard Garfield's short fiction \n  'Worzel's Tale' was removed to make room. Like Alpha it had no expansion symbol, \n  and the text on the bottom left consisted of only the artist credit. \n  Although many players speak of Alpha and Beta as different sets, officially \n  they are the same set, and the company had expected that people wouldn't \n  necessarily be able to tell the two press runs apart. However, the printer \n  accidentally used different corner rounding dies for the second run, resulting \n  in the two distinct sets.",
"common": 75,
"uncommon": 95,
"rare": 117,
"mythicRare": 0,
"basicLand": 10,
"total": 297,
"releasedAt": "1993-10-01",
"cardIds": [
  390,
  571,
  361,
  505,
  369,
  315 ]}]

但是,我似乎无法在不出现此错误的情况下获取所有这些名称:

未处理的类型异常 “Newtonsoft.Json.JsonSerializationException”发生在 Newtonsoft.Json.dll

附加信息:无法反序列化当前 JSON 数组 (例如 [1,2,3])输入“MTGLibrary.CardSetFind+CardSet”类型,因为 type 需要一个 JSON 对象(例如 {"name":"value"})来反序列化 正确。

要修复此错误,请将 JSON 更改为 JSON 对象(例如 {"name":"value"}) 或将反序列化类型更改为数组或 实现集合接口的类型(例如 ICollection、IList) 就像可以从 JSON 数组反序列化的 List 一样。 还可以将 JsonArrayAttribute 添加到类型中以强制其 从 JSON 数组反序列化。

路径 '',第 1 行,位置 1。

这是我的课:

        public class CardSet
    {
        public string id { get; set; }
        public string name { get; set; }
        public string type { get; set; }
        public string block { get; set; }
        public string description { get; set; }
        public int common { get; set; }
        public int uncommon { get; set; }
        public int rare { get; set; }
        public int mythicRare { get; set; }
        public int basicLand { get; set; }
        public int total { get; set; }
        public DateTime releasedAt { get; set; }
        public int[] cardIds { get; set; }  

    }

这是从所有集合中检索信息的方法。

        public static T _download_serialized_json_data<T>(string url) where T : new()
    {
        using (var w = new WebClient())
        {
            var json_data = string.Empty;
            try
            {
                json_data = w.DownloadString(url);
            }
            catch (Exception) { }
            return !string.IsNullOrEmpty(json_data) ? JsonConvert.DeserializeObject<T>(json_data) : new T();
        }

    }



        public static CardSet allCardSets()
    {
        var url = "http://api.mtgdb.info/sets/";
        var foundSet = _download_serialized_json_data<CardSet>(url);
        CardSet setInfo = foundSet;
        return setInfo;
    }

这是我在表单中使用的代码。

        public void fillBox()
    {
        textBox5.Text = CardSetFind.allCardSets().name;
    }

有人能帮我吗? 感谢您的阅读


您的 JSON 实体是一个数组而不是单个对象。这就是为什么 JSON.NET 对你的反序列化感到不满!

将此 JSON 反序列化为IEnumerable<T>你会解决你的问题:

IEnumerable<CardSet> result = JsonConvert.DeserializeObject<IEnumerable<CardSet>>(jsonText);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法反序列化当前 JSON 数组(例如 [1,2,3])。 C#,无法找出错误 的相关文章

  • 如何将非静态类成员“std::bind”绑定到 Win32 回调函数“WNDPROC”?

    我正在尝试将非静态类成员绑定到标准WNDPROC http msdn microsoft com en us library ms633573 aspx功能 我知道我可以通过将类成员设为静态来简单地做到这一点 但是 作为一名 C 11 ST
  • 计算 Richtextbox 中所有单词的最有效方法是什么?

    我正在编写一个文本编辑器 需要提供实时字数统计 现在我正在使用这个扩展方法 public static int WordCount this string s s s TrimEnd if String IsNullOrEmpty s re
  • ClickOnce 应用程序错误:部署和应用程序没有匹配的安全区域

    我在 IE 中使用 FireFox 和 Chrome 的 ClickOnce 应用程序时遇到问题 它工作正常 异常的详细信息是 PLATFORM VERSION INFO Windows 6 1 7600 0 Win32NT Common
  • 使用 AsyncTask 传递值

    我一直在努力解决这个问题 但我已经到了不知道该怎么办的地步 我想做的是使用一个类下载文件并将其解析为字符串 然后将该字符串发送到另一个类来解析 JSON 内容 所有部件都可以单独工作 并且我已经单独测试了所有部件 我只是不知道如何将值发送到
  • 单个对象的 Monogame XNA 变换矩阵?

    我读过一些解释 XNA Monogame 变换矩阵的教程 问题是这些矩阵应用于 SpriteBatch Begin matrix 这意味着所有 Draw 代码都将被转换 如何将变换矩阵应用于单个可绘制对象 就我而言 我想转换滚动背景 使其自
  • java.io.Serialized 在 C/C++ 中的等价物是什么?

    C C 的等价物是什么java io Serialized https docs oracle com javase 7 docs api java io Serializable html 有对序列化库的引用 用 C 序列化数据结构 ht
  • 使用接口有什么好处?

    使用接口有什么用 我听说它用来代替多重继承 并且还可以用它来完成数据隐藏 还有其他优点吗 哪些地方使用了接口 程序员如何识别需要该接口 有什么区别explicit interface implementation and implicit
  • 如何使用 LINQ2SQL 连接两个不同上下文的表?

    我的应用程序中有 2 个数据上下文 不同的数据库 并且需要能够通过上下文 B 中的表的右连接来查询上下文 A 中的表 我该如何在 LINQ2SQL 中执行此操作 Why 我们正在使用 SaaS 产品来跟踪我们的时间 项目等 并希望向该产品发
  • 将 Word 文档另存为图像

    我正在使用下面的代码将 Word 文档转换为图像文件 但是图片显得太大 内容不适合 有没有办法渲染图片或将图片保存到合适的尺寸 private void btnConvert Click object sender EventArgs e
  • 在 C 中初始化变量

    我知道有时如果你不初始化int 如果打印整数 您将得到一个随机数 但将所有内容初始化为零似乎有点愚蠢 我问这个问题是因为我正在评论我的 C 项目 而且我对缩进非常直接 并且它可以完全编译 90 90 谢谢 Stackoverflow 但我想
  • 为什么调用非 const 成员函数而不是 const 成员函数?

    为了我的目的 我尝试包装一些类似于 Qt 共享数据指针的东西 经过测试 我发现当应该调用 const 函数时 会选择它的非 const 版本 我正在使用 C 0x 选项进行编译 这是一个最小的代码 struct Data int x con
  • 标准化 UTF-8 到底是什么?

    The 重症监护室项目 http userguide icu project org transforms normalization 现在也有一个PHP库 http us php net manual en class normalize
  • 具有交替类型的可变参数模板参数包

    我想知道是否可以使用参数包捕获交替参数模式 例如 template
  • DbContext 和 ObjectContext 有什么区别

    From MSDN 表示工作单元和存储库模式的组合 使您能够查询数据库并将更改分组在一起 然后将这些更改作为一个单元写回存储 DbContext在概念上类似于ObjectContext 我虽然DbContext只处理与数据库的连接以及针对数
  • 为什么 gcc 抱怨“错误:模板参数 '0' 的类型 'intT' 取决于模板参数”?

    我的编译器是gcc 4 9 0 以下代码无法编译 template
  • C++ 函数重载类似转换

    我收到一个错误 指出两个重载具有相似的转换 我尝试了太多的事情 但没有任何帮助 这是那段代码 CString GetInput int numberOfInput BOOL clearBuffer FALSE UINT timeout IN
  • 无法接收 UDP Windows RT

    我正在为 Windows 8 RT 编写一个 Windows Store Metro Modern RT 应用程序 需要在端口 49030 上接收 UDP 数据包 但我似乎无法接收任何数据包 我已按照使用教程进行操作DatagramSock
  • 如何从 ODBC 连接获取可用表的列表?

    在 Excel 中 我可以转到 数据 gt 导入外部数据 gt 导入数据 然后选择要使用的数据源 然后在提供登录信息后 它会给我一个表格列表 我想知道如何使用 C 以编程方式获取该列表 您正在查询什么类型的数据源 SQL 服务器 使用权 看
  • 当从finally中抛出异常时,Catch块不会被评估

    出现这个问题的原因是之前在 NET 4 0 中运行的代码在 NET 4 5 中因未处理的异常而失败 部分原因是 try finallys 如果您想了解详细信息 请阅读更多内容微软连接 https connect microsoft com
  • 如何将 PostgreSql 与 EntityFramework 6.0.2 集成? [复制]

    这个问题在这里已经有答案了 我收到以下错误 实体框架提供程序类型的 实例 成员 Npgsql NpgsqlServices Npgsql 版本 2 0 14 2 文化 中性 PublicKeyToken 5d8b90d52f46fda7 没

随机推荐

  • 如何在不同的屏幕尺寸上得到完全相同的点?

    我想在用户点击特定区域时调用该操作 转到另一个视图 image 黑点 图像填充整个视图 内容模式为 Aspect Fit 问题是 当我将其设置在一种屏幕尺寸 例如 iPhone 8 上时 点击区域 会发生移动 我尝试使用按钮和约束或使用屏幕
  • 回归:导出的 Bash 函数在经过另一个过程后丢失

    从 Ubuntu 14 04 迁移到 16 04 时 我注意到我的几个 Bash 脚本由于缺少导出函数而失败 我想知道这是否与修复有关炮弹休克虫 尽管我只是简单地export f函数 而不依赖于 Bash 内部函数表示 仅当中间有另一个进程
  • 如何解决android studio中的gradle冲突?

    Please find my gradle file below 正如您所看到的 它显示红色 如果我将光标放在那里 我会得到提示 所有 com android support 库必须使用完全相同的版本规范 找到 com android su
  • 从asp.net代码获取某个网站的源代码

    有没有什么方法可以让我从 asp net 网站代码后面的一些 C 代码获取网站的源代码 最好是字符串 比如说 www google com 编辑 当然 我的意思是 html 代码 在每个浏览器中 您可以使用 viewsource 在上下文菜
  • 在 .net core、xUnit 项目中获取代码覆盖率

    我正在尝试使用以下方向的指示来获取 net core 项目中的代码覆盖率https github com Microsoft vstest docs blob master docs analyze md working with code
  • 从周日开始获取一周的问题

    以下是我创建的用于将星期日作为一周的开始日的函数 function getCurrentIntervalOfWeek liveratetime get start of each week dayofweek date w liverate
  • 变量仅在 for 循环内本地分配[重复]

    这个问题在这里已经有答案了 我正在做第一个 Kaggle 挑战 我对这种行为感到惊讶 组合由两个pd DataFrame组成 一个是训练集 另一个是测试集 我想删除两列 因此我创建了一个 for 循环来迭代组合中的项目 for datase
  • Python库“unittest”:以编程方式生成多个测试[重复]

    这个问题在这里已经有答案了 可能的重复 如何在 Python 中生成动态 参数化 单元测试 我有一个功能要测试 under test 以及一组预期的输入 输出对 2 332 234 99213 9 3 我希望这些输入 输出对中的每一对都单独
  • 如何将一组形状保存为 JPG 图像?

    我使用 VBA 在图像上放置了多个形状 并希望将整个组保存为 JPG Sub SaveImageTEST ActiveSheet Shapes Range Array Picture 1 SaveAsPicture worldmap jpg
  • Oracle语法左连接三个或更多表

    我正在尝试了解旧的 Oracle Left Join 语法 有两个表就可以了 FROM A B WHERE A Col B Col 我们将此查询称为 Q0 这很容易理解 例如和这个维恩diagram 但是 当我们添加第三个或更多表时 我的大
  • 使用程序进行短路评估

    我目前正在为一种非常有限的面向对象语言开发编译器 我想将所有值视为对象 并且这些值上的运算符将作为方法实现 编译器将程序转换为基于堆栈的虚拟机的汇编程序 在编译期间 我将整数文字转换为特殊 Integer 类的对象 算术运算符作为该类的方法
  • 错误:格式 %d 需要 int 类型,但参数 2 的类型为 double(*)(int, int)

    我似乎无法在 printf 语句中找出这个错误 每当我将格式说明符从整数更改为浮点时 反之亦然 我都会得到相同的错误 error format f expects type double but argument 2 has type do
  • 将 pandas 列从字符串季度和年份数组转换为日期时间列,其中列内存在混合格式

    这是我之前提出的问题的延伸 将 pandas 列从字符串 Quarters 和 Years 数组转换为日期时间列 我有一个像这样的数据框 其中日期混乱 我想将它们转换为日期时间对象 So 3Q 11会成为2011 09 30 Q1 20会成
  • 带有命名出口的 Angular 2/4 路由?

    我正在尝试在我的应用程序中实现命名出口 这是我的路线配置 path contact children path component ContactComponent pathMatch full path list component Co
  • 在哪里可以找到 python 标准库代码?

    我想尝试查找Python标准库中某些模块的源代码 但未能找到它们 下载 python tarball 后 我尝试查看模块目录 但它主要包含 c 文件 我还尝试查看操作系统 mac osx 附带的 python 的模块目录 其中似乎主要有 p
  • Richfaces 4 组件不渲染

    我遇到的问题是 jsf 标签没有被解析 所以我在页面中没有看到 richfaces 组件 我正在使用 richfaces 4 tomcat 7 和 jsf 2 0 这是我的 faces config xml
  • Java 警告:[未检查] 未检查的转换

    我有以下 部分 课程 public class Graph
  • Java lambda 表达式和内存分配

    假设我们有这样的三种方法 它们的作用都是相同的 但是它们在内存分配和效率方面有何不同 方法一将在每次调用期间创建 Function 实例 但第二个方法会做同样的事情吗 是否应该始终使用第三个版本 或者任一版本都是安全的并且 JIT 编译器将
  • GIT refs/heads/master 未指向有效对象

    这是我的问题 我创建了一个名为 project 的新 git 存储库 里面有一些文件 我使用以下命令克隆该存储库 git clone bare project project git 吉特告诉我 Cloning into bare repo
  • 无法反序列化当前 JSON 数组(例如 [1,2,3])。 C#,无法找出错误

    我正在尝试从以下 json 数据中检索所有名称并将其放入文本框中 这是 json 数据 我缩短了一些值以使其更易于阅读 但这不会影响问题 id LEA name Limited Edition Alpha block null type C