带有数字键的动态 json 对象

2024-03-18

我有一个 json 对象,在以下命令的帮助下将其转换为动态 C# 对象this https://stackoverflow.com/questions/3142495/deserialize-json-into-c-dynamic-object/3806407#3806407回答。它工作得很好,但问题是这个对象有数字键。例如,

var jsStr = "{address:{"100": {...}}}";  

所以我不能写

dynObj.address.100  

而且,据我所知,我不能使用索引器来获取这个对象,如下所示

dynObj.address["100"]  

请向我解释一下如何才能使其正常工作。


据我从源代码中可以看到,他通过私有字典解析属性,因此您必须使用反射来访问字典键,或者稍微修改他的代码,以便 DynamicJSONObject 中的 TryGetMember 如下(并使用 __numeric__ 来获取密钥,例如 data.address.__numeric__100,然后避免使用 __numeric__ 作为密钥):

public override bool TryGetMember(GetMemberBinder binder, out object result)
        {
            var name = binder.Name; 
            //Code to check if key is of form __numeric__<number> so that numeric keys can be accessed
            if (binder != null && binder.Name != null && binder.Name.StartsWith("__numeric__"))
            {
                name = binder.Name.Substring(11);
            }

            if (!_dictionary.TryGetValue(name, out result))
            {
                // return null to avoid exception.  caller can check for null this way...
                result = null;
                return true;
            }

            var dictionary = result as IDictionary<string, object>;
            if (dictionary != null)
            {
                result = new DynamicJsonObject(dictionary);
                return true;
            }

            var arrayList = result as ArrayList;
            if (arrayList != null && arrayList.Count > 0)
            {
                if (arrayList[0] is IDictionary<string, object>)
                    result = new List<object>(arrayList.Cast<IDictionary<string, object>>().Select(x => new DynamicJsonObject(x)));
                else
                    result = new List<object>(arrayList.Cast<object>());
            }

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

带有数字键的动态 json 对象 的相关文章

随机推荐

  • Pycharm 在相对路径中看不到带有 ../ 的文件

    我正在使用 pycharm 开发一个 python 项目 但是 问题是它拒绝加载相对路径包含的文件 当我尝试时 self image pygame image load resources img prey png convert alph
  • 在winRT MessageDialog中添加文本框

    我正在 Windows 8 商店应用程序中工作 我试图弹出一个对话框 让用户在文本框中输入信息 怎么做 The InputDialog http winrtxamltoolkit codeplex com SourceControl cha
  • Maven 检查样式作为构建的一部分

    如果存在一些问题 是否有可能以某种方式强制 Maven 使构建失败checkstyle错误 现在我必须跑site目标生成javadocs and checkstyle报告 我想成功install目标 如果 checkstyle 有一些错误
  • Yii - ajax 加载的表单元素的用户端验证

    我在静态表单中使用 Yii 用户端验证 这非常棒 但我不知道如何为 ajax 加载的元素添加验证器 我有一个简单的表单小部件 我想通过 AJAX 加载更多的输入字段 对于小型 jQuery 脚本来说这不是问题 但我不知道如何为加载的元素添加
  • WPF 中的进度条样式是老式的。酒吧增量。如何实现带有vista或windows-7阴影发光效果的进度条?

    WPF 中的进度条样式是老式的 酒吧增量 如何实现带有 vista 或 windows 7 阴影发光效果的进度条 图片http quickshare my3gb com download 2 JPG http quickshare my3g
  • C 指针和内存分配:Realloc 数组和指针传递

    对于那些有 C 经验的人来说 这将是一个简单的内存分配 引用问题 这是我的数据结构 struct configsection char name unsigned int numopts configoption options typed
  • 有没有办法用 Moq 来一般模拟 DbSet.Find 方法?

    我目前正在使用扩展方法来将 DbSets 一般模拟为列表 public static DbSet
  • CSV 未附加到应用程序电子邮件中?

    所以我有一段时间遇到这个问题但无法让它工作 我一直在构建一个调查应用程序 用户只需在其中输入信息并将其保存到 csv 文件中 我现在正处于需要将应用程序内的 csv 文件附加到电子邮件地址的阶段 我刚刚在我的新手机上测试了这个 收到电子邮件
  • 在 ipython 笔记本中测量单元执行时间的简单方法

    除了单元的原始输出之外 我还想获取单元执行所花费的时间 为此 我尝试了 timeit r1 n1但它不会公开单元格内定义的变量 time适用于仅包含 1 条语句的单元格 In 1 time 1 CPU times user 4 s sys
  • 为什么 UITableView 单元格在滚动时重叠?

    我有一个UITableView大约有 100 行 每个单元格都检查了图像 但是当我们滚动时UITableView 所有单元格在未检查的单元格中重叠 UITableViewCell tableView UITableView tableVie
  • 重载new和delete

    我尝试遵循这篇文章 http flipcode com archives How To Find Memory Leaks shtml http flipcode com archives How To Find Memory Leaks
  • 相对URL问题

    我将有多个文件夹 模块来访问常用文件 但访问它们对我来说似乎很重要 我确实通过这个链接来了解相对定位并设法解决了一些问题 但不是所有的 参考 php 中的相对 URL 路径 https stackoverflow com questions
  • IOS - 如果用户点击随机元素而不是背景,如何隐藏键盘?

    在我的应用程序中我有这样的东西 IBAction backgroundTouch id sender businessDescription resignFirstResponder self view endEditing YES 我不确
  • 如何使用 C# 读取 XML 元素的内容? [复制]

    这个问题在这里已经有答案了 可能的重复 解析 xml 文件的最佳实践 https stackoverflow com questions 55828 best practices to parse xml files 我希望能够在 XML
  • Spring WebFlux 创建无阻塞线程池

    我决定用 Java 重写我的 Web 应用程序 之前是用 Python 编写的 在我的应用程序中 我使用了无阻塞 I O 我有工作池 Celery Eventlet 线程 我在其中传递由数百个 API 调用组成的任务 现在我正在使用Spri
  • 如何使用 Process.Start 启动管道并重定向命令?

    我正在使用 System Diagnostics Process Start 在 Linux 操作系统上远程启动命令 到目前为止 我已经能够启动简单的命令 然后读取输出 例如我可以执行命令echo Hello World并阅读Hello W
  • 跨线程操作错误

    if listBox1 InvokeRequired listBox new StringBuilder this listBox1 Text 这是 c 中的代码 执行时会对 listBox1 产生无效的跨线程操作错误 listBox1 是
  • 透明背景上的 TKinter 按钮

    我试图了解如何将按钮应用到透明背景 同时保持其形状 当我生成下面的代码时 边框周围出现灰色背景 而且看起来也失去了形状 使用的颜色 侧边栏 2E3A4B 53 按钮 2C2F33 100 from tkinter import def bt
  • Laravel artisan cron 不工作

    我有一个页面在 beanstalked 中对电子邮件进行排队 该脚本按预期工作 当我有队列侦听器时 电子邮件会被触发 即 php artisan queue listen 但是当我删除侦听器并将其添加到 cron 作业时 usr bin p
  • 带有数字键的动态 json 对象

    我有一个 json 对象 在以下命令的帮助下将其转换为动态 C 对象this https stackoverflow com questions 3142495 deserialize json into c dynamic object