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

C#使用JObject解析JSON时如何获取orders下的订单号属性键名

解决方法

你遍历orders对象拿到的每个元素本质是JProperty类型(Newtonsoft.Json的内置类型),直接取它的Name属性即可得到作为键的订单号。

代码示例

方案1:强类型写法(更稳妥,避免dynamic的运行时报错风险)

string content = "{... json ...}";
JObject data = JObject.Parse(content);
JObject orders = data["orders"] as JObject;

foreach (JProperty orderProp in orders.Properties())
{
    // 获取订单号
    string orderNumber = orderProp.Name;
    // 获取offerId
    string offerId = orderProp.Value["offerId"].ToString();

    // 你的后续业务逻辑
}

方案2:兼容你现有dynamic写法

不需要大幅改动原有代码,直接加一行取Name即可:

string content = "{... json ...}";
dynamic data = JObject.Parse(content);
dynamic orders = data.orders;

foreach (var order in orders)
{
    // 新增这行拿订单号
    string orderNumber = order.Name;
    string offerId= order.Last.offerId;
}

原理解释

你JSON里的orders是对象结构而非数组,被JObject.Parse解析后对应Newtonsoft.Json.Linq.JObject类型,遍历该对象时的每个元素是描述属性的JProperty实例:

  • JProperty.Name 对应对象的属性名,也就是你要的订单号
  • JProperty.Value 对应属性的内容,也就是包含offerId的订单对象

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 02:45:03