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

C#中如何使用变量作为键获取JSON动态对象的属性值

解决方案

你可以通过Newtonsoft.Json提供的JObject索引器或者SelectToken方法实现变量作为属性名取值的需求,这种方式也适配JSON动态新增节点的场景。

代码实现(兼容现有写法)

using Newtonsoft.Json.Linq;
using System.Net;

// 你需要传入的变量,值为"Person1"、"Person2"或者其他动态新增的节点名
string targetPerson = "Person1";

WebClient client = new WebClient();
string list = client.DownloadString("https://linkto.json");
// 反序列化为JObject而非dynamic
JObject json = JObject.Parse(list);
// 通过变量作为键取值
string var2 = json[targetPerson][0]["image"].ToString();

更安全的写法(避免不存在的属性/数组为空引发异常)

使用SelectToken方法,路径不存在时会返回null,不会直接抛出运行时异常:

// 前面的请求逻辑不变
JObject json = JObject.Parse(list);
string var2 = json.SelectToken($"{targetPerson}[0].image")?.ToString();
// 后续可自行判断var2是否为null做兼容处理

补充说明

  • WebClient已在.NET Core 2.1及以上版本标记为过时,推荐使用HttpClient进行网络请求,性能和安全性更好。
  • 如果坚持要使用dynamic语法实现,也可以通过json.GetType().GetProperty(variable).GetValue(json, null)的反射方式取值,但该方式性能更低、异常处理更麻烦,不推荐使用。

内容的提问来源于stack exchange,提问作者MrCoolAndroid

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 16:15:05