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

时间:2018-08-14 13:30:05

标签: c# asp.net-core .net-core streamreader

我对.NET还是很陌生,所以这可能很明显,但是我已经苦苦挣扎了两个小时,这实在令人沮丧。

我正在尝试创建一个简单的GET请求,该请求读取一个JSON文件并返回它,就像这样:

// 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返回:

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

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

应如何编写此代码以正确格式化JSON响应?

任何帮助表示感谢,谢谢

1 个答案:

答案 0 :(得分:3)

您尝试过吗?

Return "raw" json in ASP.NET Core 2.0 Web Api

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

编辑:

正如柯克·拉金(Kirk Larkin)所说,您也可以这样做:

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");
}