C# 从Web响应中提取指定ticket number的最优实现方法
C# API响应工单号提取实现方案
优先选择JSON解析方案,稳定性更高,适配后续字段格式调整,不会误匹配其他含number的字段。
方案1:JSON反序列化(优先推荐)
.NET Core 3.0+ / .NET 5+ 版本(内置System.Text.Json库,无需额外安装)
首先定义极简的响应实体类:
// 仅需定义需要提取的字段,其余返回字段会自动忽略 public class TicketApiResponse { public int number { get; set; } }
替换注释处的提取逻辑:
var result = streamReader.ReadToEnd(); var response = System.Text.Json.JsonSerializer.Deserialize<TicketApiResponse>(result); string ticketNum = response.number.ToString();
.NET Framework版本
可使用Newtonsoft.Json(Json.NET)实现,逻辑和上述一致:
var result = streamReader.ReadToEnd(); var response = Newtonsoft.Json.JsonConvert.DeserializeObject<TicketApiResponse>(result); string ticketNum = response.number.ToString();
方案2:正则表达式匹配(轻量场景可选)
无需定义类和引入第三方库,适配所有.NET版本,可精准匹配完整"number":键,不会误匹配number_of_comments等其他字段,且自动适配工单号位数扩容。
首先引入正则命名空间:
using System.Text.RegularExpressions;
替换注释处的提取逻辑:
var result = streamReader.ReadToEnd(); // 兼容冒号前后存在空格的场景 Match match = Regex.Match(result, @"""number""\s*:\s*(\d+)"); if (match.Success) { string ticketNum = match.Groups[1].Value; // 此处可添加工单号留存逻辑 } else { // 此处可添加匹配失败的异常处理逻辑 }
内容的提问来源于stack exchange,提问作者Daniel Favreau
相关产品推荐
相关产品推荐

