Web api 调用 returns json 具有空字段的数据

Web api call returns json data with empty fields

我正在使用 Flurl(下面的函数)获取一些 json 数据。我的问题是这个 return 是预期的字段而不是实际数据:

json 位于:https://jsonplaceholder.typicode.com/users

完全相同的功能在未使用 Microsoft.AspNetCore.Mvc 的单独独立测试应用程序中运行良好。

知道为什么它会 return 字段而不是数据吗?谢谢。

using System;
using Test.API.Constants;
using Microsoft.AspNetCore.Mvc;
using System.Threading.Tasks;
using Flurl.Http;

namespace Test.API.Controllers
{
    public class TestController
    {
        [Route(ApiControllerRoutes.Test.test)]
        [HttpGet]
        public async Task<dynamic> GetAsync()
        {
            try
            {
                string url = "https://jsonplaceholder.typicode.com/users";
                return await url.GetJsonListAsync();
            }
            catch (Exception e)
            {
            }
        }
    }
}

GetJsonListAsync(没有通用参数)returns Task<IList<dynamic>>,所以最简单的解决方法是使用控制器中相同的 return 类型,而不是 Task<dynamic>.

如果你想让它更健壮和类型安全,我会完全跳过 dynamics 并创建一个 User class,然后使用 GetJsonListAsync<User>() 和 return Task<IList<User>> 在你的控制器中。我看到涉及嵌套对象,因此您实际上需要几个 classes 来表示整个结构。 json2csharp 是一个很好的辅助工具。只需粘贴 JSON 表示 单个 用户(不是整个列表),它就会为您生成所有内容。