首页 > 解决方案 > Web api 调用返回带有空字段的 json 数据

问题描述

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

截屏

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

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

任何想法为什么它会返回字段而不是数据?谢谢。

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)
            {
            }
        }
    }
}

标签: jsonflurl

解决方案


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

如果您希望它更健壮且类型安全,我将dynamic完全跳过 s 并创建一个User类,然后在您的控制器中使用GetJsonListAsync<User>()并返回。Task<IList<User>>我看到其中涉及嵌套对象,因此您实际上需要几个类来表示整个结构。json2csharp是一个很好的工具来帮助解决这个问题。只需粘贴单个用户的 JSON 表示形式(不是整个列表),它就会为您生成所有内容。


推荐阅读