c# - 返回的json中的双引号

标签 c# json asp.net-mvc

我有一个返回简单 JSON 的操作。出于演示目的,我将粘贴示例代码。要序列化的简单类:

public class Employee
{
    public string FullName { get; set; }
}

返回 json 的操作:
public JsonResult Test()
{
    var employee = new Employee { FullName = "Homer Simpson" };
    var serializer = new JavaScriptSerializer();
    var json = serializer.Serialize(employee);

    return Json(json, JsonRequestBehavior.AllowGet);
}

这是我感到困惑的地方。当我从浏览器调用此操作并查看 Fiddler 的响应时,结果如下:
HTTP/1.1 200 OK
Server: ASP.NET Development Server/10.0.0.0
Date: Mon, 15 Aug 2011 20:52:34 GMT
X-AspNet-Version: 4.0.30319
X-AspNetMvc-Version: 3.0
Cache-Control: private
Content-Type: application/json; charset=utf-8
Content-Length: 34
Connection: Close

"{\"FullName\":\"Homer Simpson\"}"

Fiddler 中的“JSON”选项卡显示“选定的响应不包含有效的 JSON 文本”。
有效的响应应该是这样的:
"{"FullName":"Homer Simpson"}"

这里发生了什么?
谢谢

最佳答案

您不需要自己序列化为 JSON,应该这样做:

public JsonResult Test() {
  var employee = new Employee { FullName = "Homer Simpson" };
  return Json(employee, JsonRequestBehavior.AllowGet);
}

您的代码有效地对其进行了两次序列化,从而为您提供了一个字符串结果。

有效的响应实际上应该是这样的:
{"FullName":"Homer Simpson"}

(没有周围的引号)

关于c# - 返回的json中的双引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7070759/

相关文章:

ios - 将 JSON 中的图像添加到 ScrollView Swift 4

java - 如何直接提供 JSON 输入作为字符串参数

asp.net-mvc - 改变 : * incorrectly added to http header response (asp. 净 mvc3)

c# - 使用 linq/lambda 构建位标志

c# - 将 XML 绑定(bind)到 wpf 数据网格

ios - 将 JSON 解析为 TableView

c# - 使用 MVC/MCP 时如何在没有 switch 语句的情况下处理 UI 的派生类?

c# - Entity Framework ,包含和条件运算符(使用 charindex 之类的)

c# - 如何从 C# 作为 MT4 dll 连接到 Mysql?

asp.net-mvc - 属性如何阻止 MVC 操作的执行?