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

