考虑以下类:
class Fake
{
public int test { get; set; }
}
现在我的GET
:
[HttpGet]
[Produces(MediaTypeNames.Application.Json)]
public async Task<IActionResult> Get()
{
var fake = new Fake { test = 1 };
return Ok(fake);
}
结果=完美:
{
"test": 1
}
这是我预期的结果-以下是我所有的替代失败:
所以,我想做的是 * 不 * 使用类,而是使用它的底层JSON
表示,所以我尝试:
[HttpGet]
[Produces(MediaTypeNames.Application.Json)]
public async Task<IActionResult> Get()
{
var fake = "{ \"test\": 1 }";
return Ok(fake);
}
这让我想到:
"{ \"test\": 1 }"
这显然不是我想要的。
所以我在Stack Overflow上找到了另一个“答案”,这导致我尝试:
[HttpGet]
[Produces(MediaTypeNames.Application.Json)]
public async Task<IActionResult> Get()
{
var fake = "{ \"test\": 1 }";
return Ok(JsonConvert.DeserializeObject(fake));
}
其然后产生:
{"test":[]}
我最后的尝试是
[HttpGet]
[Produces(MediaTypeNames.Application.Json)]
public async Task<IActionResult> Get()
{
var fake = "{ \"test\": 1 }";
return new JsonResult(fake);
}
这让我想到:
"{ \u0022test\u0022: 1 }"
我怎么才能让我的方法返回第一次调用时得到的JSON
,但实际上我要返回的是JSON
字符串?
为什么第二次尝试得到了奇怪的JSON
结果?
1条答案
按热度按时间ttisahbt1#
发生这种情况是因为你的字符串对象将被序列化器编码,导致双重编码的字符串,使用
Content
:附言
对于反序列化-序列化方法,您可以尝试使用System.Text.Json序列化器-自第3版以来,ASP.NET Core的默认值: