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

如何在未知JSON Schema时用JsonNode遍历获取所有值?

使用JsonNode遍历JSON对象的所有值(无需指定键名)

问题场景

假设从API获取到如下JSON响应:

{
  "message": "Source: ",
  "incomingUrl": "https://10.1.1/api/echo",
  "incomingHeadersCount": 21,
  "apiVersion": "1.0"
}

目前使用JsonNode解析时,必须指定键名才能访问对应值:

var parsedJson = JsonNode.Parse(apiResponse.Result);
Console.WriteLine(parsedJson["message"]);

希望无需知晓任何键名,直接遍历获取所有值,例如通过类似如下代码实现:

foreach (var item in parsedJson)
{
    Console.WriteLine(item);
}

期望输出:"Source: ", "https://10.1.1/api/echo", "21", "1.0"

请问用JsonNode能否实现?

解决方案

可以实现。JsonNode.Parse返回的根节点如果是JSON对象,实际类型是JsonObject,它实现了IEnumerable<KeyValuePair<string, JsonNode?>>接口,只需将根节点转换为JsonObject,然后遍历其Values集合即可获取所有值。

基础实现代码

var parsedJson = JsonNode.Parse(apiResponse.Result);
// 先验证根节点类型,避免非JSON对象场景报错
if (parsedJson is JsonObject jsonObj)
{
    foreach (var value in jsonObj.Values)
    {
        Console.WriteLine(value);
    }
}

简化遍历写法

如果确认根节点一定是JSON对象,也可以直接转换后遍历:

foreach (var item in ((JsonObject)parsedJson).Values)
{
    Console.WriteLine(item);
}

实际输出

运行上述代码后,会输出:

Source: 
https://10.1.1/api/echo
21
1.0

注意事项

  • 务必先判断根节点类型是否为JsonObject,如果API返回的是JSON数组(JsonArray),需要用对应的遍历方式
  • JsonNode的值可能为null,若业务需要处理空值,可在遍历过程中添加空值检查

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 11:30:18