反序列化包含字典的对象列表

2023-11-23

我见过很多例子,似乎表明我所做的事情应该有效,但无论出于何种原因,它都不起作用。我正在尝试反序列化对象的集合,其中一个属性是字典,如下所示:

class Program
{
    static void Main(string[] args)
    {
        var json = "{\"Collection\":[{\"ID\":\"1243\",\"Dictionary\":[{\"Key\":\"color\", \"Value\":\"red\"},{\"Key\":\"size\",\"Value\":\"large\"}]},{\"ID\":\"1243\",\"Dictionary\":[{\"Key\":\"color\", \"Value\":\"blue\"},{\"Key\":\"size\",\"Value\":\"small\"}]}]}";
        //var json = "[{\"ID\":\"1243\",\"Dictionary\":[{\"Key\":\"color\", \"Value\":\"red\"},{\"Key\":\"size\",\"Value\":\"large\"}]},{\"ID\":\"1243\",\"Dictionary\":[{\"Key\":\"color\", \"Value\":\"blue\"},{\"Key\":\"size\",\"Value\":\"small\"}]}]";
        List<MyObject> myObjects = new JavaScriptSerializer().Deserialize<List<MyObject>>(json);
    }
}

[DataContract]
public class MyObject
{
    [DataMember]
    public string ID { get; set; }

    [DataMember]
    public Dictionary<string, string> Dictionary { get; set; }
}

第一个 json 字符串将整个内容封装在一个对象中 - 如果我运行该字符串,它运行良好,但 myObjects 只是一个空列表。如果我运行第二个字符串(没有被包装),我会收到以下错误:

类型 'System.Collections.Generic.Dictionary`2[[System.String, mscorlib,版本=4.0.0.0,文化=中性, PublicKeyToken = b77a5c561934e089],[System.String,mscorlib, 版本=4.0.0.0,文化=中性,PublicKeyToken=b77a5c561934e089]]' 不支持数组的反序列化。

从我所做的研究来看,这似乎应该非常简单 - 任何人都知道我应该使用哪种 JSON 格式以及出了什么问题?如果我只处理一个对象而不是一组对象,则 JSON 反序列化效果很好。


是的,确实,反序列化器不会反序列化字典对象,特别是如果您有任何复杂的类型和日期。解决方案是使用 Newtonsoft.Json 使用 Jobject 进行反序列化,您可以以此为例并尝试。在您的情况下,您可以将其带到 var 或 Jobject

    JArray resources=(JArray)JsonConvert.DeserializeObject(objJson);
                     itemStores = resources.Select(resource => new Resource`enter code here`
                     {
                         SpaceUsed = long.Parse(resource["indexDiskMB"].ToString()),
                         ItemId =resource["id"].ToString(),
                         CountItems =Int32.Parse(resource["numItems"].ToString()),
                         ItemType=resource["type"].ToString()

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

反序列化包含字典的对象列表 的相关文章

  • MVC3中设置下拉列表中的所选项目

    我必须为视图中的下拉列表设置所选项目 但它不起作用 View div class editor label Html LabelFor model gt model Gender div div class editor field Htm
  • 打印“X”个字符数与“X”字符串长度的所有可能组合(暴力破解)

    我正在尝试编写一个单词组合生成器 我的意思是打印 X 个字符数与 X 字符串长度的所有可能组合 首先 我需要说的是 我在 StackOverFlow 中看到了一个关于这个问题的问题 其中有很多单词生成器的答案来执行此操作 在不同的语言上 但
  • 当事件button.click发生时,如何获取按钮名称/标签?

    我以编程方式制作按钮并将它们添加到堆栈面板中 以便每次用户导航到页面时按钮都会发生变化 我正在尝试做这样的事情 当我单击创建的按钮时 它将获取按钮的标签并转到正确的页面 但是 我无法使用 RoutedEventHandler 访问按钮元素
  • 如何将 SOLID 原则应用到现有项目中

    我对这个问题的主观性表示歉意 但我有点卡住了 我希望之前处理过这个问题的人能够提供一些指导和建议 我有 现在已经成为 一个用 C 2 0 编写的非常大的 RESTful API 项目 并且我的一些类已经变得巨大 我的主要 API 类就是一个
  • extern 声明和函数定义都在同一文件中

    我只是浏览了一下gcc源文件 在gcc c 我发现了类似的东西 extern int main int char int main int argc char argv 现在我的疑问是extern是告诉编译器特定的函数不在这个文件中 但可以
  • 强制初始化模板类的静态数据成员

    关于模板类的静态数据成员未初始化存在一些问题 不幸的是 这些都没有能够帮助我解决我的具体问题的答案 我有一个模板类 它有一个静态数据成员 必须为特定类型显式实例化 即必须专门化 如果不是这种情况 使用不同的模板函数应该会导致链接器错误 这是
  • 语音识别编程问题入门

    所以 你们可能都看过 钢铁侠 其中托尼与一个名为贾维斯的人工智能系统进行交互 演示剪辑here http www youtube com watch v Go8zsh1Ev6Y 抱歉 这是广告 我非常熟悉 C C 和 Visual Basi
  • 在 C# 中,如何根据在 gridview 行中单击的按钮引用特定产品记录

    我有一个显示产品网格视图的页面 该表内有一列 其中有一个名为 详细信息 的超链接 我想这样做 以便如果用户单击该特定产品的详细信息单元格 将打开一个新页面 提供有关该产品的更多信息 我不确定如何确定哪个Product记录链接的详细信息以及我
  • 如何使用 Regex.Replace 从字符串中删除数字?

    我需要使用Regex Replace从字符串中删除所有数字和符号 输入示例 123 abcd33输出示例 abcd 请尝试以下操作 var output Regex Replace input d string Empty The d标识符
  • 什么是空终止字符串?

    它与什么不同标准 字符串 http www cplusplus com reference string string 字符串 实际上只是一个数组chars 空终止字符串是指其中包含空字符的字符串 0 标记字符串的结尾 不一定是数组的结尾
  • 在 .NET MAUI 中实现 TouchTracking

    我一直致力于将我们的应用程序从 Xamarin Forms 迁移到 NET MAUI 我们的应用程序几乎没有绘图功能 用户可以用手指进行绘图 我们用了TouchTrackingXamarin Forms 中的 nuget 包 但与 NET
  • Elm:如何从 JSON API 解码数据

    我有这个数据使用http jsonapi org http jsonapi org format data type prospect id 1 attributes provider user id 1 provider facebook
  • 在 C# 中为父窗体中的子窗体控件添加事件处理程序

    我有两种形式 一种是带有按钮和文本框的父表单 单击该按钮时 将打开一个对话框 该子窗体又包含一个文本框和一个按钮 现在我想要的是 每当子表单文本框中的文本更改时 父表单文本框中的文本会自动更改 为了获得这个 我所做的是 Form3 f3 n
  • memcpy/memmove 到联合成员,这是否设置“活动”成员?

    重要说明 一些评论者似乎认为我是从工会抄袭的 仔细看memcpy 它从普通旧地址复制uint32 t 它不包含在联合中 另外 我正在复制 通过memcpy 到工会的特定成员 u a16 or u x in a union 不直接到整个联盟本
  • 如何最好地以编程方式将 `__attribute__ ((unused))` 应用于这些自动生成的对象?

    In my makefile我有以下目标 它将文本 HTML 资源 编译 为unsigned char数组使用xxd i http linuxcommand org man pages xxd1 html 我将结果包装在匿名命名空间和标头保
  • Oauth2中如何同时撤销RefreshToken和使AccessToken失效

    我正在使用 Owin Oauth2 授权和资源服务器相同 开发单页面应用程序 AngularJS Net MVC Json Rest API 的身份验证流程 我选择了 Bearer Token 路由而不是传统的 cookie session
  • 从共享网络文件夹运行的 .NET 应用程序的性能损失

    从共享网络文件夹运行 NET 4 0 应用程序是否有任何性能损失 我发现哪个应用程序启动速度较慢 但 在使用时没有注意到任何变慢 但不确定 当通过网络运行可执行文件时 Windows 不会在应用程序启动时通过网络传输整个应用程序 这样做是为
  • Java 中序列化的目的是什么?

    我读过很多关于序列化的文章 以及它如何如此美好和伟大 但没有一个论点足够令人信服 我想知道是否有人能真正告诉我通过序列化一个类我们真正可以实现什么 让我们先定义序列化 然后我们才能讨论它为什么如此有用 序列化只是将现有对象转换为字节数组 该
  • mysql_query 保留返回时在表中创建的数据类型?

    我在mysql中有一个表 CREATE TABLE user id INT name VARCHAR 250 我查询表 result mysql query SELECT id name FROM user 我收集结果 while row
  • 为什么空循环使用如此多的处理器时间?

    如果我的代码中有一个空的 while 循环 例如 while true 它将把处理器的使用率提高到大约 25 但是 如果我执行以下操作 while true Sleep 1 它只会使用大约1 那么这是为什么呢 更新 感谢所有精彩的回复 但我

随机推荐

  • 如何在iPhone上播放MIDI?

    据我所知 没有本地或第三方库可用于在 iPhone 上播放 MIDI 但似乎有不少应用程序可以做到这一点 他们用什么 有什么线索吗 供那些走这条路的人参考 AVMIDIPlayer 是在 iOS 8 中引入的 似乎在设备上运行良好 但 si
  • C++ JSON 序列化

    我想要一种尽可能自动地将对象序列化和反序列化为 JSON 的方法 连载 对我来说 理想的方法是 如果我调用实例 JSONSerialize 它会返回一个带有 JSON 对象的字符串 该对象具有该对象的所有公共属性 name of prope
  • 如何从段落 python docx 中获取图像(inlineshape)

    我想逐段阅读docx文档 如果有图片 InlineShape 则用它周围的文本处理它 函数 Document inline shapes 将给出文档中所有内联形状的列表 但我想得到一个 如果存在的话 恰好出现在当前段落中 代码示例 from
  • Eclipse 中模板的 Django 标签

    我想知道是否可以在 Eclipse IDE 中为基于 Django 的模板提供自动完成 自动格式化和这些漂亮的功能 主要是为了这些事情 提前致谢 检查此页面以获取 Django Eclipse 插件 http eclipse kacprza
  • 如何使用 Java IO 读取 Windows NTFS 备用数据流?

    我试图让我的 Java 应用程序读取给定路径中的所有数据 文件 目录 元数据等 这还包括 NTFS 称为备用数据流 ADS 的一个奇怪的东西 显然 它就像目录或文件中的第二层数据 您可以打开命令提示符并使用 在ADS中创建文件 例如 C A
  • 如何在eclipse中显示日语字符[重复]

    这个问题在这里已经有答案了 我使用 eclipse Juno 作为 Java IDE 并且在我的 java 代码中注释和日志记录语句都是日语的 eclipse 显示垃圾字符而不是正确的日语字符 我跟着这个帖子解决该问题并在 eclipse
  • 在 Xcode 5 上使用 Boost - Apple LLVM 5.0

    由于只有一个编译器 LLVM 5 0 我在构建 Xcode 5 的 Boost 时遇到了问题 我尝试过使用 c 11 使用 clang 来使用 Homebrew 我尝试过各种想法和脚本 但到目前为止没有一个有效 要为使用 clang llv
  • 在 Django Rest Framework 选项请求中显示过滤器和排序

    我正在使用 Django Rest Framework 我注意到 API 的 Web 可浏览部分有一个名为 选项 的按钮 单击它会显示以下内容 HTTP 200 OK Vary Accept Content Type text html A
  • ASP.NET MVC 4 缩小和背景图像

    我目前正在使用 ASP NET MVC 4 CSS JavaScript 优化器 它与我自己的 CSS JavaScript 配合得很好 但我也想将它与插件一起使用 每个插件都有自己的文件夹 Content css my own css o
  • 上个月的最后一天 - BigQuery

    我正在尝试选择其中时间戳字段 recdate 的日期值高达并包含该月最后完成日期的行 例如 由于现在是 2016 年 7 月 我希望所有行的日期值在 2016 年 6 月 31 日 含 之前 这曾经在 T SQL 中工作得很好 我会使用以下
  • 无法连接到 mySQL 数据库

    所以我在使用 Java 连接 MySQL 时遇到问题 这是我的代码 import java sql Connection import java sql DriverManager import java sql SQLException
  • JQuery 延迟立即拒绝

    使用JQuery Deferred时可以直接调用reject 吗 没有调用异步函数 也许我想在异步函数的开头进行某种测试 如果测试失败我想立即拒绝 请参阅下面的第一个 if 块 function doSomethingAsync Test
  • 用于选择的 Angular 2 RouterLink

    我想使用页面上的选择元素创建导航 在锚标记上使用 RouterLink 指令很简单 但是选择下拉菜单是否有等效的指令 或者我是否需要在我的组件上创建自己的导航方法 以便在我的选择发生更改时调用 a Location a
  • 计时器刻度不增加时间间隔的值

    我想增加计时器滴答事件的值 但它没有增加 不知道我忘记了什么 它只显示1
  • 异步任务“堵塞”

    最近 我开始尝试大规模抓取网站以进行存档 我认为让多个 Web 请求异步工作以加快速度是一个好主意 10 000 000 个页面绝对需要存档 因此我冒险进入并行性的严厉女主人 三分钟后我开始想知道为什么我正在创建的任务 通过Task Fac
  • 在不使用 EF 的情况下在 appsettings.json 中获取多个连接字符串

    刚刚通过迁移我开发的当前 MVC Net 应用程序开始使用 Net Core RC2 在我看来 由于 appsettings json 处理配置的方式 如果我有多个连接字符串 我要么必须使用 EF 来检索连接字符串 要么必须创建为每个连接字
  • 为什么 Promise 的“then()”处理程序会立即执行?

    我想更彻底地了解 Promise 在 JavaScript 中的工作原理 我尝试了以下代码 function delay timeout return new Promise function resolve reject setTimeo
  • 如何在Flutter gridview中从右向左填充数据

    我试图从右到左填充网格视图数据 因为应用程序是阿拉伯语 并且一切都是 RTL Here is what I want 我正在使用 Stream 生成器来填充数据和以下 Gridview 小部件 Widget productGrid List
  • MySQL - 将两列拆分为两个不同的行

    如果这是一个愚蠢的问题 我不知道要创建这个抱歉 我有一个表 两个团队和总观察 稍后我将在不同的地方使用此信息 所以我的想法是将这两列连接在一列中 但两个不同的行 HomeTeam AwayTeam Totalwatch A B 100 A
  • 反序列化包含字典的对象列表

    我见过很多例子 似乎表明我所做的事情应该有效 但无论出于何种原因 它都不起作用 我正在尝试反序列化对象的集合 其中一个属性是字典 如下所示 class Program static void Main string args var jso