【发布时间】:2023-03-13 19:16:01
【问题描述】:
我有一个返回简单 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"}"
这里发生了什么? 谢谢
【问题讨论】:
-
"{\"FullName\":\"Homer Simpson\"}"是字符串 JSON 对象的转义版本。解析后,引擎会将其转换为{ "FullName":"Home Simpson" }。因为它被大括号外的引号包围,所以必须对内部引号进行转义,否则您将得到一个无效的字符串。 -
我理解但不应该 fiddler 将返回的字符串解析为 JSON 对象并在 JSON 选项卡中显示 JSON?
标签: c# json asp.net-mvc