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

C#控制台应用Web JSON反序列化及foreach循环问题求助

问题解决方法

1. 修正实体类定义

JSON中的roles是数组类型,你的RolesJson类里把它定义成了单个Roles对象,类型不匹配导致无法正确反序列化。修改后的实体类:

namespace SomeNamespace
{
    public class Role // 类名用单数更贴合单个角色的语义
    {
        [JsonProperty("name")]
        public string Name { get; set; } // 属性名采用C#规范的PascalCase格式
    }

    public class RolesJson
    {
        [JsonProperty("roles")]
        public List<Role> Roles { get; set; } // 用List<Role>对应JSON中的数组结构
    }
}

2. 用自定义类反序列化并读取目标字段

替换原有的JObject解析逻辑,直接将JSON反序列化为自定义类对象,然后遍历读取单个字段:

var outputString = await response.Content.ReadAsStringAsync();

// 反序列化为自定义类实例
var rolesJson = JsonConvert.DeserializeObject<RolesJson>(outputString);

// 遍历角色数组,读取指定字段(比如name)
foreach (var role in rolesJson.Roles)
{
    Console.WriteLine($"角色名称:{role.Name}");
    // 如果需要读取其他字段,只需在Role类中添加对应属性即可,例如:
    // [JsonProperty("oid")]
    // public string Oid { get; set; }
    // 之后直接访问role.Oid即可
}

3. 原foreach循环问题说明

你之前用foreach (JObject jo in stuff["roles"])能临时运行,但本质是绕开了强类型解析。修正实体类后,直接遍历List<Role>即可,无需嵌套循环就能精准获取目标字段,同时避免类型不匹配带来的异常。

内容的提问来源于stack exchange,提问作者Adam Mohammed Dabdoub

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 11:05:39