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 (将#修改为@)