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

C# 如何统一解析API返回的JObject与JArray两种格式JSON数据

方案1:使用JToken.Parse统一解析(最推荐)

Newtonsoft.Json 提供的JToken.Parse方法可以自动识别JSON结构,不管外层是对象{}还是数组[]都能正常解析,无需手动判断字符串开头,代码写法非常简洁:

using (WebClient webClient = new WebClient())
{
    webClient.Headers.Add("Authorization", "Basic ***");
    webClient.Headers.Add("clientId", clientId);
    webClient.Headers.Add("Content-Type", "application/json");
    string response = webClient.DownloadString(urlAgreementBase + urlAgreementParams);
    if (string.IsNullOrWhiteSpace(response))
    {
        throw new InvalidPluginExecutionException("Failed to retrieve company. Response was empty.");
    }
    // 统一解析,不用区分对象还是数组
    JToken result = JToken.Parse(response);
    
    // 后续根据类型处理即可
    if (result.Type == JTokenType.Array)
    {
        JArray arrayResult = (JArray)result;
        // 处理数组逻辑
    }
    else if (result.Type == JTokenType.Object)
    {
        JObject objectResult = (JObject)result;
        // 处理对象逻辑
    }
}

方案2:统一转为数组处理(如果业务逻辑适配)

如果你的后续处理逻辑本来就兼容多数据的情况,可以把单个对象也包装成数组统一处理,省掉分支判断:

JToken result = JToken.Parse(response);
JArray arrayResult = result.Type == JTokenType.Array ? (JArray)result : new JArray(result);
// 后续统一用arrayResult处理即可

额外建议

优先确认API返回结构不一致的原因:如果是你调用了不同的接口(比如查单个条目和查条目列表),可以根据调用的接口类型直接选择对应的解析方式,不需要额外判断;如果是同一个接口随机返回两种结构,建议联系API提供方确认是否是接口设计缺陷,从根源解决问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 08:06:08