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

C#解析JSON匹配同对象键值并拼接ID到URI发起POST请求

C# .NET 接口JSON字段提取与HTTP请求实现方案

针对匹配分支精准取数字段的实现

你当前遍历operations数组时,循环体内拿到的单条item本身就是对应JSON条目在已解析DOM结构中的节点引用,完全不需要重复解析全量JSON、也不需要二次遍历数组,直接在匹配到的switch分支内从当前item对象读取目标字段即可,没有额外性能开销。
核心实现代码参考:

// 解析接口返回的原始响应字符串
JObject rootNode = JObject.Parse(apiRawResponse);
// 读取根节点下的operations数组
JArray operationList = rootNode["operations"] as JArray;
if (operationList == null) return;

foreach (JObject operationItem in operationList)
{
    string opDescription = operationItem["description"]?.Value<string>();
    switch (opDescription)
    {
        case "Stop Station":
            // 直接从当前匹配条目的节点读取所需字段
            string currentOpId = operationItem["id"]?.Value<string>();
            string cumulocityModelContent = operationItem["com_cumulocity_model"]?.ToString(Formatting.None);
            // 拿到字段后直接在当前分支执行后续POST请求逻辑
            break;
        // 其余业务分支按相同规则处理即可
    }
}

注意:读取字段时统一加空值校验,避免接口返回字段缺失时触发空引用异常。

针对动态ID拼接URI并发起POST请求的实现

拼接URI时不要直接用字符串硬拼接,优先通过Uri类处理路径拼接,自动规避斜杠重复、特殊字符未转义的问题,在匹配分支内直接通过IHttpClientFactory取出预注册的executeOperations命名客户端发起请求即可。
核心实现代码参考(接上面case分支内的逻辑):

case "Stop Station":
    string currentOpId = operationItem["id"]?.Value<string>();
    string cumulocityModelContent = operationItem["com_cumulocity_model"]?.ToString(Formatting.None);
    if (string.IsNullOrWhiteSpace(currentOpId)) break;

    // 拼接请求路径:如果注册命名客户端时已经配置了BaseAddress,直接传相对路径即可
    Uri requestUri = new Uri($"operations/{currentOpId}/execute", UriKind.Relative);
    // 构造请求体,根据接口实际要求调整Content-Type和内容格式
    StringContent requestContent = new StringContent(
        cumulocityModelContent,
        Encoding.UTF8,
        "application/json"
    );

    // 取出预配置的命名客户端发起请求
    using HttpClient executeClient = _httpClientFactory.CreateClient("executeOperations");
    HttpResponseMessage apiResponse = await executeClient.PostAsync(requestUri, requestContent);
    // 后续按业务需求处理响应即可
    apiResponse.EnsureSuccessStatusCode();
    break;
  • 如果注册executeOperations客户端时未配置BaseAddress,可以用基地址+相对路径的方式生成绝对URI:new Uri(new Uri("你的接口服务根地址"), $"operations/{currentOpId}/execute"),框架会自动处理路径拼接的格式问题。
  • 如果POST请求的参数格式不是直接传com_cumulocity_model的原始内容,直接在当前分支内基于拿到的字段值组装对应格式的HttpContent即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 04:03:40