JsonConvert.SerializeObject 添加 \r\n

use*_*605 5 c# asp.net json.net

所以目前我正在开发一个 WebAPI 并且运行时出现以下错误。

当我尝试返回一个用 JsonConvert.SerializeObject(object) 序列化的 List 时,我的第二个属性(字符串 JSON)被回车和换行符掩盖了。

这是代码:

public class Template
{
    public string Name;
    public string JSON;
}
    public HttpResponseMessage GetAll()
    {
        var items = db.GetTemplates().ToList<Template>();


        var resp = new HttpResponseMessage()
        {
            Content = new StringContent(JsonConvert.SerializeObject(items),Encoding.UTF8,"application/json")
        };
        resp.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json");

        return resp;

    }
Run Code Online (Sandbox Code Playgroud)

更改为:

Content = new StringContent(JsonConvert.SerializeObject(items.ToList<Template>()[0]),Encoding.UTF8,"application/json")
Run Code Online (Sandbox Code Playgroud)

显示同样的错误

在将代码更改为:

Content = new StringContent(JsonConvert.SerializeObject(items.ToList<Template>()[0].JSON),Encoding.UTF8,"application/json")
Run Code Online (Sandbox Code Playgroud)

一切恢复正常...

在浏览器中检查,而不是在 Visual Studio 中!

有人给我提示吗?谷歌只是不会让我找到答案。

提前致谢!

Dar*_*elk 0

正如 Brian Rogers 在评论中提到的,使用 JsonSerializerSettings Formatting = Formatting.None 属性:

JsonSerializerSettings jsonSettings = new JsonSerializerSettings
{
  Formatting = Formatting.None
};

string jsonString = JsonConvert.SerializeObject(items,jsonSettings);
Run Code Online (Sandbox Code Playgroud)