Json.NET在返回json序列化字符串时添加反斜杠
我试图使用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解析。 我该如何删除它们。
不,它没有
class Program { class Book { public int ID; public string BookName; } static void Main() { var books = new List { new Book { ID = 1, BookName = "A" }, new Book { ID = 2, BookName = "B" } }; var x = from d in books select new { ID = d.ID, BookName = d.BookName }; string str = JsonConvert.SerializeObject(x.ToList()); Console.WriteLine(str); } }
可能有两个问题:
A)您正在查看调试器的结果。 要检查这一点,将JsonConvert
放在一个临时变量中(就像我一样)并使用调试器查看它。 单击沙漏右侧的箭头,然后选择Text Visualizer
。
要么
B)调用方法再次将对象转换为Json,从而逃避一切。
string str = "Your string with slashes"; str = JToken.Parse({your string here}).ToString();
JSON对象被序列化两次。
我解决了:
声明方法响应格式的操作契约以返回JSON。 我更改了方法以返回对象而不是字符串。
Jason的序列化将在幕后自动完成。
- 如何从.NET获取gitlab hooks的推送信息
- 从大文件中检索版本信息
- .NET MySqlCommand @占位符与MySQL变量冲突
- Microsoft.Threading.Tasks引用不正确的System.Threading.Tasks.dll版本
- C#Encoding.Converting Latin to Hebrew
- 找不到方法:’Void Google.Apis.Util.Store.FileDataStore..ctor(System.String)’
- 在C#.NET中调用Ruby或Python API
- 如何确定给定日期是否是该月的第N个工作日?
- 在Dictionary中使用IEqualityComparer与HashCode和Equals()的效率