【发布时间】:2013-08-14 07:45:18
【问题描述】:
我正在尝试使用 Json.NET 将列表序列化为 json 字符串,但返回字符串中包含反斜杠,这反过来又导致 json 解析失败。
var x = from d in entities.Books.ToList()
select new
{
ID = d.ID,
BookName = d.BookName
};
return JsonConvert.SerializeObject(x.ToList());
以上代码返回
"[{\"ID\":1,\"BookName\":\"MVC Music Store - Tutorial - v3.0\"},{\"ID\":2,\"BookName\":\"Pro.ASP.NET.MVC.3.Framework\"},{\"ID\":3,\"BookName\":\"Application Architecture Guide v2\"},{\"ID\":4,\"BookName\":\"Gang of Four Design Patterns\"},{\"ID\":5,\"BookName\":\"CS4 Pocket Reference\"}]"
这会导致所有 JSON 解析失败。我怎样才能删除这些。
【问题讨论】:
-
这很奇怪,那些反斜杠对我来说就像普通的转义字符。请记住,如果您在调试器中检查此函数的返回值,它将保留那些转义字符,而字符串的实际值没有它们。
-
但是从客户端使用 Json 时,反斜杠会导致各种问题。
-
但是当我从谷歌浏览器访问服务端点时,这就是返回给我的内容。如果您考虑包含 JSON 的字符串,也可以作为字符串。
-
.Books.ToList()可能太多了。.Books99% 就够了。 -
您在使用 Web API 吗?如果是这样,您不需要调用 JsonConvert.SerializeObject()。 Web API 为您序列化对象。见this question。
标签: c# .net json .net-4.0 json.net