微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

REST API - 模型绑定时如何将属性从 int/string 转换为 string?

如何解决REST API - 模型绑定时如何将属性从 int/string 转换为 string?

在我的 API 中,我使用 Refit 创建了一个客户端来调用第三方 API。问题是第三方 API 返回不一致的数据。它返回城市名称和邮政编码,但有时这些是整数或字符串:

{
"input": "Pa","cities": [
    {
        "code": "09100","city": "PAMIERS"
    },{
        "code": "09130","city": "PAILHES"
    },{
        "code": 10100,"city": "PARS LES ROMILLY"
    },{
        "code": 10160,"city": "PAISY COSDON"
    },{
        "code": 10210,"city": "PARGUES"
    }
]
}

所以我创建了这条路线:

public async Task<IActionResult> SearchCity([FromForm] CitySearch data)
{
    var api = RestService.For<ICityAPI>("https://vicopo.selfbuild.fr");
    try
    {
        var search = await api.SearchCityListAsync(data.search);
        return Ok(search);
    }
    catch (Exception ex)
    {
        return StatusCode(StatusCodes.Status502BadGateway,ex);
    }
}

谁使用这个客户端:

public interface ICityAPI
{
    [Get("/search/{search}")]
    Task<CityList> SearchCityListAsync(string search);
}

最终将接收到的 Json 绑定到这个模型:

public class CityList
{
    [JsonProperty("cities")]
    public List<City> Cities { get; set; }
}

public class City
{
    [JsonProperty("city")]
    public string city { get; set; }

    [JsonProperty("code")]
    public string code { get; set; }
}

如果这个 Json 不是常量,我如何将它绑定到我的模型?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。