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

在C# ASP.NET项目中如何从Bitly接口返回的JSON提取短链接

实现方案

你可以通过两种常见方式提取id字段的短链接:

方案1:强类型反序列化(推荐)

适合项目中需要多次调用Bitly接口、或者需要用到返回结果中其他字段的场景,类型安全不容易出错。

  1. 首先定义和返回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; }
}
  1. 反序列化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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 04:48:00