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

使用C#查询键名动态的JSON并获取对应属性的实现方法

动态解析可变键JSON的实现方案

核心思路是利用字典类型映射动态键值对,或者直接遍历JSON节点结构,不需要为outputs下的可变键定义固定类属性。下面给出C#生态两种主流JSON库的实现方式:

方式1:强类型映射(推荐)

不需要修改整体类结构,仅需将outputs属性定义为字典类型即可:

第一步:定义实体类

// 对应outputs下的子对象结构
public class OutputValueItem
{
    public string Value { get; set; }
}

// JSON根对象
public class RootJsonModel
{
    [JsonPropertyName("@message")] // System.Text.Json用这个特性
    // [JsonProperty("@message")] // Newtonsoft.Json用这个特性
    public string Message { get; set; }
    
    public Dictionary<string, OutputValueItem> Outputs { get; set; }
}

第二步:反序列化后遍历取值

System.Text.Json(.NET Core 3.0+ 自带库)示例:

using System.Text.Json;

// 反序列化
var root = JsonSerializer.Deserialize<RootJsonModel>(yourJsonString);

// 遍历所有动态键和对应值
foreach (var (key, item) in root.Outputs)
{
    Console.WriteLine($"键名:{key},对应value:{item.Value}");
}

Newtonsoft.Json(Json.NET)示例:

using Newtonsoft.Json;

// 反序列化
var root = JsonConvert.DeserializeObject<RootJsonModel>(yourJsonString);

// 遍历取值和上述一致
foreach (var kvp in root.Outputs)
{
    Console.WriteLine($"键名:{kvp.Key},对应value:{kvp.Value.Value}");
}

方式2:无实体类直接遍历节点

如果不想定义实体类,可以直接解析为JSON节点对象遍历:

System.Text.Json 示例:

using System.Text.Json;

var doc = JsonDocument.Parse(yourJsonString);
var outputsNode = doc.RootElement.GetProperty("outputs");

foreach (var property in outputsNode.EnumerateObject())
{
    string key = property.Name;
    string value = property.Value.GetProperty("value").GetString();
    Console.WriteLine($"键名:{key},对应value:{value}");
}

Newtonsoft.Json 示例:

using Newtonsoft.Json.Linq;

var jObj = JObject.Parse(yourJsonString);
var outputsNode = jObj["outputs"] as JObject;

foreach (var property in outputsNode.Properties())
{
    string key = property.Name;
    string value = property.Value["value"].ToString();
    Console.WriteLine($"键名:{key},对应value:{value}");
}

注意事项

  • 如果value的类型不固定(可能是数字、布尔等),需要根据实际场景做类型判断和转换
  • 生产环境建议加空值判断,避免outputs节点不存在或者value为空时抛出异常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 02:15:00