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

C#中foreach遍历JsonNode出现GetEnumerator错误,如何解决?

解决JsonNode无法使用foreach遍历的问题

你的问题出在productSizes的类型是JsonNode,它作为所有JSON节点的基类,并没有实现枚举器(GetEnumerator),所以无法直接用foreach遍历。而你要访问的sizes应该是一个JSON数组,必须先把它转换成JsonArray类型才能遍历。

给你两种可行的解决方法:

方法一:直接转换为JsonArray

var productSizes = siteJson["api"]["productDetails"]["getDetails"]["data"]["sizes"] as JsonArray;

if (productSizes != null)
{
    foreach (var size in productSizes)
    {
        Console.WriteLine(size);
        Console.WriteLine();
    }
}

方法二:类型检查后转换

这种方式更安全,能避免转换失败引发的异常:

var productSizesNode = siteJson["api"]["productDetails"]["getDetails"]["data"]["sizes"];

if (productSizesNode is JsonArray productSizes)
{
    foreach (var size in productSizes)
    {
        Console.WriteLine(size);
        Console.WriteLine();
    }
}

补充说明

如果sizes实际是JSON对象而非数组,那你需要改用遍历键值对的方式,比如:

if (productSizesNode is JsonObject productSizesObj)
{
    foreach (var kvp in productSizesObj)
    {
        Console.WriteLine($"键:{kvp.Key},值:{kvp.Value}");
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 16:20:45