.NET 5.0 WEBAPI GET如何返回Json?【求救】

fxyc87 2021-02-23 12:18:27
就是特别简单的一个例子,但怎么也返回不了JSON,
环境说明:.net 5.0 webapi

先来Startup文件

public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
}

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseHttpsRedirection();
app.UseDefaultFiles();
app.UseRouting();
app.UseStaticFiles();

app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();

});
}


然后是控制器
[HttpGet]
public stringGet()
{
return xxx.ToJson(); 这里用的MongoDB转换的数据,调试看是正常的json结构没问题
}

但运行F12发现出来的是文本 content-type是text/plan

然后将控制器加上[Produces("application/json")]特性,确实变了

但是收到的json是经过强制转义后的json,也用不了


[HttpGet]
public JsonResult Get()
{

return new JsonResult (xxxObject); //xxxObject是原始的类对象
}


这样试发现确实是json,不过是个空的JSON对象,只有一个大扩号,{}

然后再尝试直接返回对象

[HttpGet]
public xxxObjectGet()
{

return xxxObject; //xxxObject是原始的类对象
}

发现和JsonResult一样,是空的json {}

求指点怎么用.net 5创建一个最简单的get请求,能返回json的,

谢谢 ,感觉这么一个简单的功能都实现不了,有些郁闷。

在网上找的例子基本上都是几年前的WEB Form,用不了

谢谢。
...全文
1243 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
正怒月神 版主 2021-02-25
  • 打赏
  • 举报
回复
直接返回类型就可以了。 [HttpGet] public 类型 Get() { return xxx; 这里用的MongoDB转换的数据,调试看是正常的json结构没问题 }
ziqi0716 2021-02-24
  • 打赏
  • 举报
回复
你直接初始化一个新项目,看下那个天气预报接口是怎么返回json结果的.
楠小南 2021-02-23
  • 打赏
  • 举报
回复
试试


        [httpGet]
        public  dynamic  Test()        
        {
             return new {id=1};
        }



  • 打赏
  • 举报
回复
我觉得去官网查比在这问要好些。毕竟用3.1的多,哈哈。
楠小南 2021-02-23
  • 打赏
  • 举报
回复
引用 3 楼 fxyc87 的回复:
[quote=引用 1 楼 楠小南 的回复:]试试


        [httpGet]
        public  dynamic  Test()        
        {
             return new {id=1};
        }



不行,和用object是一样的,得到的json是一个空的{}[/quote] 不行?怎么不行?为什么我又行你又不行,你不说说怎么不行 别人怎么知道怎么不行
引用 3 楼 fxyc87 的回复:
[quote=引用 1 楼 楠小南 的回复:]试试


        [httpGet]
        public  dynamic  Test()        
        {
             return new {id=1};
        }



不行,和用object是一样的,得到的json是一个空的{}[/quote]
引用 3 楼 fxyc87 的回复:
[quote=引用 1 楼 楠小南 的回复:]试试


        [httpGet]
        public  dynamic  Test()        
        {
             return new {id=1};
        }



不行,和用object是一样的,得到的json是一个空的{}[/quote] api 的路由有设置吗? 方法进去了吗? 调试一下 打个断什么的。看看方法执行了没有,明确告诉你 这方法是没问题的,倒不如想想是其他问题吧,再不挤 就看看 官方模板的api 实现,新建一个项目带webapi 的,里面有个例子可以供你参考
fxyc87 2021-02-23
  • 打赏
  • 举报
回复
这样也试过了,

        public HttpResponseMessage Get()
        {

            HttpResponseMessage httpReponseMessage = new HttpResponseMessage();
            string jsonstr = "{id:1,name=123}";
            httpReponseMessage.Content = new StringContent(jsonstr);
            return httpReponseMessage;
        }
也不行,返回的是
{"version":{"major":1,"minor":1,"build":-1,"revision":-1,"majorRevision":-1,"minorRevision":-1},"content":{"headers":[{"key":"Content-Type","value":["text/plain; charset=utf-8"]}]},"statusCode":200,"reasonPhrase":"OK","headers":[],"trailingHeaders":[],"requestMessage":null,"isSuccessStatusCode":true}
fxyc87 2021-02-23
  • 打赏
  • 举报
回复
引用 2 楼 X-i-n 的回复:
        public string Get()
        {
            return JsonConvert.SerializeObject(result);
        }
//对方收到后,JsonConvert.DeserializeObject<object>(response);
//如果是js的话,JSON.parse(data)

//或者
        public XXObject Get()
        {
            //……
            return xxobject;
        }
方法1,这样肯定是可以的,但我想要没转义的标准json 方法2我文章有试过不行,
fxyc87 2021-02-23
  • 打赏
  • 举报
回复
引用 1 楼 楠小南 的回复:
试试


        [httpGet]
        public  dynamic  Test()        
        {
             return new {id=1};
        }



不行,和用object是一样的,得到的json是一个空的{}
X-i-n 2021-02-23
  • 打赏
  • 举报
回复
        public string Get()
        {
            return JsonConvert.SerializeObject(result);
        }
//对方收到后,JsonConvert.DeserializeObject<object>(response);
//如果是js的话,JSON.parse(data)

//或者
        public XXObject Get()
        {
            //……
            return xxobject;
        }

62,243

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧