在C# ASP.NET项目中如何从Bitly接口返回的JSON提取短链接
实现方案
你可以通过两种常见方式提取id字段的短链接:
方案1:强类型反序列化(推荐)
适合项目中需要多次调用Bitly接口、或者需要用到返回结果中其他字段的场景,类型安全不容易出错。
- 首先定义和返回JSON结构匹配的实体类:
// 匹配Bitly返回的JSON结构 public class BitlyShortenResponse { // JsonPropertyName要和JSON里的字段名完全对应,大小写敏感 [System.Text.Json.Serialization.JsonPropertyName("id")] public string Id { get; set; } // 后续需要其他字段可以在这里补充定义 [System.Text.Json.Serialization.JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } [System.Text.Json.Serialization.JsonPropertyName("link")] public string OriginalLink { get; set; } }
- 反序列化JSON字符串提取id:
[HttpGet("sendNotification/{PlanId}")] [ValidateModelState] public async Task<IActionResult> SendNotification(int PlanId) { var link ="https://chats.landbot.io"; var shortUrlJson = await GetShortUrl(link); // 反序列化JSON var bitlyResponse = System.Text.Json.JsonSerializer.Deserialize<BitlyShortenResponse>(shortUrlJson); // 拿到短链接 string shortUrl = bitlyResponse?.Id; // 后续业务逻辑直接使用shortUrl即可 return NoContent(); }
方案2:动态解析(无需定义实体类)
如果只需要临时获取id字段、不想额外定义类,可以直接用JSON动态解析:
[HttpGet("sendNotification/{PlanId}")] [ValidateModelState] public async Task<IActionResult> SendNotification(int PlanId) { var link ="https://chats.landbot.io"; var shortUrlJson = await GetShortUrl(link); // 用JsonNode解析(.NET 6及以上支持) var jsonNode = System.Text.Json.Nodes.JsonNode.Parse(shortUrlJson); string shortUrl = jsonNode?["id"]?.GetValue<string>(); // 如果项目用的是Newtonsoft.Json,写法如下: // JObject jObj = JObject.Parse(shortUrlJson); // string shortUrl = jObj.Value<string>("id"); return NoContent(); }
注意事项
- 如果你用的是Newtonsoft.Json(Json.NET),把对应的序列化属性、方法换成Newtonsoft的对应实现即可。
- 建议增加空值校验,避免接口返回异常结构时报错。
内容的提问来源于stack exchange,提问作者Raneu
相关产品推荐
相关产品推荐

