调用时转义字符的格式错误 System.IO.StreamReader

Wrong formatting with escape characters when calling System.IO.StreamReader

我是 .NET 的新手,所以这可能是一个显而易见的问题,但我已经苦苦挣扎了几个小时,这让我非常沮丧。

我正在尝试创建一个读取 JSON 文件和 returns 文件的简单 GET 请求,如下所示:

// GET: api/test
[HttpGet]
public string Get()
{
    using (StreamReader reader = new StreamReader("data/test.json", System.Text.Encoding.UTF8))
    {
        string json = reader.ReadToEnd();
        return json;
    }
}

test.json 文件如下所示:

{
    "foo": "bar"
}

curl http://\[::\]:50001/api/test returns:

"{\n    \"foo\": \"bar\"\n}"

为什么 C# 返回带有转义字符和引号的字符串?

应该如何编写此代码才能使 JSON 响应的格式正确?

感谢任何帮助,谢谢

你试过吗?

public IActionResult Get()
{
    using (StreamReader reader = new StreamReader("data/test.json", System.Text.Encoding.UTF8))
    {
        string json = reader.ReadToEnd();
        return Content(json, "application/json");
    }
}

编辑:

正如柯克·拉金所说,你也可以这样做:

public IActionResult Get()
{
    // File(string virtualPath, string contentType)
    // data/test.json needs to be in the wwwroot folder
    return File("data/test.json", "application/json");
}