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

C# JSON反序列化失败求助:解析APIM用户数据报错

解决APIM用户JSON反序列化错误问题

我一眼就瞅出问题出在properties.groups的类型不匹配上!错误提示里说遇到了{字符,这说明JSON里的groups数组元素是对象,但你在C#类里把groups定义成了IEnumerable<string>——期望字符串结果拿到了对象,反序列化自然就崩了。

问题根源

你提供的示例JSON里groups是空数组[],但实际APIM返回的groups数组(当用户归属某些组时)每个元素都是包含id等属性的对象,比如真实返回的结构可能是这样:

"groups": [
    {
        "id": "/subscriptions/xxxx/resourceGroups/xxx/providers/Microsoft.ApiManagement/service/xxx/groups/xxx"
    }
]

而你的代码把groups声明为字符串集合,完全不匹配这个结构,直接触发了反序列化错误。

修复方案

  1. 创建组引用类:先定义一个对应APIM组引用结构的类,用来匹配JSON格式:
public class APIMGroupReference
{
    [JsonProperty("id")]
    public string Id { get; set; }
    // 如果需要其他属性(比如组名称name),可以在这里添加对应的JsonProperty和属性
}
  1. 修改Groups属性类型:在NewUserAPIMResultingDataProperties类里,把groups的类型从IEnumerable<string>改成IEnumerable<APIMGroupReference>:
[JsonProperty("groups")]
public IEnumerable<APIMGroupReference> groups { get; set; }
  1. 验证其他结构:你的identities类定义是正确的,和JSON里的身份结构完全匹配,不需要修改。

额外排查建议

如果还是不确定APIM返回的真实JSON结构,可以先把stringContent打印出来,看看实际返回的groups到底是什么样子,这样能更精准地调整类结构。另外,建议给反序列化加个错误捕获,方便快速定位问题:

try
{
    newUserResult = JsonConvert.DeserializeObject<NewUserAPIMResultingData>(stringContent);
}
catch (JsonSerializationException ex)
{
    Console.WriteLine($"反序列化错误详情:{ex.Message}");
    Console.WriteLine($"实际返回的JSON内容:{stringContent}");
}

这样调整后应该就能正常反序列化啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 21:48:11