You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#反序列化JSON为dynamic后如何获取users节点下所有子键名

枚举JSON dynamic节点键名的实现方法

现有基础信息

  • 待处理的JSON文件结构如下:
{ 
  "users": {
    "xyz ": {
      "Name": "abc "
    },
    "x ": {
      "Name": "xy "
    },
    "abc": {
      "Name": "ijk"
    }
  }
}
  • 当前使用的反序列化代码:
dynamic keys = JsonConvert.DeserializeObject(File.ReadAllText(path));
  • 目标需求:提取users节点下所有子键,清理键名首尾的多余空格后,得到如下输出
xyz
x
abc

具体实现代码

Json.NET反序列化无类型声明的JSON对象时,得到的dynamic实例实际是JObject类型,直接将users节点显式转换为JObject后,遍历其属性集合即可拿到所有键名,再做空格清理就能得到目标结果:

using Newtonsoft.Json.Linq;

// 原有反序列化逻辑
dynamic keys = JsonConvert.DeserializeObject(File.ReadAllText(path));

// 提取users节点下的所有键名
JObject usersSection = (JObject)keys.users;
IEnumerable<string> cleanedKeyNames = usersSection
    .Properties()
    .Select(property => property.Name.Trim()); // 移除键名首尾多余空格

// 遍历输出结果
foreach (string key in cleanedKeyNames)
{
    Console.WriteLine(key);
}

注意- 不要尝试直接用普通字典遍历语法操作未声明类型的dynamic对象,很容易触发运行时绑定异常,显式转换为JObject是兼容性最高的处理方式

  • 原JSON中xyz 、x 两个键末尾带有多余空格,调用Trim()处理即可匹配需要的输出格式

内容的提问来源于stack exchange,提问作者Varun V Gowda

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 17:24:22