首页 > 解决方案 > ASP.NET Web API 响应在浏览器和 Postman 中显示转义字符

问题描述

我正在学习如何使用 ASP.NET 创建 Web API,但是在让我的 JSON 响应在浏览器中看起来不错时遇到了问题。

将 JSON 字符串打印到调试控制台时,它看起来很好:

{
  "a": 2,
  "b": "hello"
}

但是当在浏览器中或通过 Postman(甚至在“漂亮视图”中)查看它时,我得到了这个:

"{\r\n  \"a\": 2,\r\n  \"b\": \"hello\"\r\n}"

我可以让浏览器很好地显示结果吗?

这是我的测试模型:

namespace Test.REST.Models
{
    public class Test
    {
        public int a;
        public string b;

        public Test(int a, string b)
        {
            this.a = a;
            this.b = b;
        }
    }
}

这是我的测试控制器:

namespace Test.REST.Controllers
{
    public class TestController : ApiController
    {
        public string Get()
        {
            Test.REST.Models.Test test = new Test.REST.Models.Test(2, "hello");
            string json = JsonConvert.SerializeObject(test, Formatting.Indented);
            System.Diagnostics.Debug.WriteLine(json);
            return json;
        }
    }
}

标签: c#asp.netrestescaping

解决方案


你有一个错误,修复类

public class Test
{
    public int a { get; set; }
    public string b { get; set; }

    public Test(int a, string b)
    {
        this.a = a;
        this.b = b;
    }
}

修复后,我使用 VS 2019 和 Postman 测试了您的代码。一切看起来都很正常。

如果我使用

string json = JsonConvert.SerializeObject(test, Newtonsoft.Json.Formatting.Indented);

输出

{
  "a": 2,
  "b": "hello"
}

如果我使用 Chrome 浏览器,外观相同

删除 Newtonsoft.Json.Formatting.Indented 后

string json = JsonConvert.SerializeObject(test);

输出

{"a":2,"b":"hello"}

推荐阅读