【问题标题】:How to return a Json from a .Net Core Web API?如何从 .Net Core Web API 返回 Json?
【发布时间】:2019-04-22 08:22:55
【问题描述】:

这是一个基本问题。我是 ASP.Net Core 的新手,所以我使用 Visual Studio 2017 中的模板创建了一个 .Net Core Web API 项目,我想知道如何从 Get() 函数返回 Json 字符串。

提供的 Get() 函数。

    [HttpGet]
    public IEnumerable<string> Get()
    {
        return new string[] { "value1", "value2" };
    }

我想知道如何更改,所以它返回一个 Json 字符串的 int 变量,如下所示。

    // GET: api/MOER
    [HttpGet]
    public <<some return type>> Get()
    {
        _MOER = 32;

        return <<return a Json result/string of _MOER>>;
    }

我见过 Nuget 包 Newtonsoft.Json,您可以在其中进行序列化/反序列化,但我不确定它是否适用于 .Net Core。

我也看到了他们使用 JsonResult 的示例,但是当我尝试使用这种方法时,编译器不知道 Json() 是什么。

    [HttpGet]
    public JsonResult Get()
    {
        _MOER = 32;

        return Json(_MOER);
    }

感谢您的帮助!

【问题讨论】:

  • 看来你使用的是[ApiController],为什么不直接返回一个IActionResult类型呢?

标签: c# json.net asp.net-core-webapi


【解决方案1】:

将此属性添加到您的控制器类:

[Produces("application/json")]

这样就变成了:

[Produces("application/json")]
public class YourController: Controller {

   [HttpGet]
   public IEnumerable<string> Get()
   {
       return new string[] { "value1", "value2" };
   }
}

应该够了,否则我相信默认是 XML(除非客户端使用 Accept HTTP 标头明确要求 JSON)。

【讨论】:

  • 好的,但我想知道如何返回一个 Json 字符串,以便它返回类似 { "key":"value"}
  • 然后你需要改变你的方法,让它返回一个键/值类型,比如 Dictionary。字符串列表将被序列化为纯字符串数组。
  • 我不能只使用 Newtonsof.Json 的序列化/反序列化来返回一个类吗? (所以你知道,我对返回“value1”、“value2”不感兴趣)
  • 哦,所以你是说如果我返回一个字典,那么它将作为一个 json 字符串返回。那么这是否意味着 Get 返回的所有内容总是在 json 字符串中?
  • 是的,无论返回类型是什么,它都会返回,序列化为 JSON。如果你有一个名为 Foo 的类,它有两个字符串属性 Bar 和 Baz,结果将是:{ "Bar":"value of bar", "Baz":"value of baz" } 试试吧!
猜你喜欢
  • 1970-01-01
  • 2020-08-05
  • 2020-09-07
  • 1970-01-01
  • 1970-01-01
  • 2021-10-29
  • 2017-12-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多