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
相关产品推荐
相关产品推荐

