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

如何从JToken对象(非JObject)提取键?仅使用JRaw遍历方案

如何从JToken(而非JObject)中提取键值对

嗨,没问题!完全可以从JToken对象中提取键——你之所以觉得只能拿到值,是因为没抓住JToken子节点的类型特点。

当你的JToken代表一个JSON对象时,它的子元素其实都是JProperty类型的节点,每个JProperty都自带Name(就是你要的键)和Value(对应的值)属性。

针对你给出的代码(而且你明确要求只能用这个实现方式),我们只需要对JRaw解析后的内容做一步转换,就能轻松拿到键值对:

var raw = JRaw.Parse(x);
// 把JRaw包裹的原始JSON字符串解析成JToken(本质是JObject,不过我们用JToken类型操作)
var jsonToken = JToken.Parse(raw.Value.ToString());

// 遍历所有JProperty子节点
foreach (var prop in jsonToken.Children<JProperty>())
{
    // 获取键
    string key = prop.Name;
    // 获取值(按需转成字符串或其他类型)
    string value = prop.Value.ToString();
    
    // 这里可以处理你的业务逻辑
    Console.WriteLine($"Key: {key}, Value: {value}");
}

小提示:

如果你的输入x本身就是标准的JSON对象字符串,解析后的jsonToken实际上是JObject的实例,但JObject继承自JToken,所以完全符合你“不直接用JObject”的要求。

如果x是JSON数组,那遍历逻辑会稍有不同,但核心还是通过Children()获取子节点,再根据节点类型处理——不过从你的问题描述来看,你应该是在处理JSON对象。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:31:16