一尘不染

Json.NET在返回JSON序列化字符串时添加反斜杠

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解析失败。如何删除这些。


阅读 500

收藏
2020-07-27

共1个答案

一尘不染

不,不是

class Program
{
    class Book
    {
        public int ID;
        public string BookName;
    }

    static void Main()
    {
        var books = new List<Book> { 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,因此转义了所有内容。

2020-07-27