Json.NET добавляет обратную косую черту при возврате сериализованной строки json

Я пытаюсь сериализовать список в json-строку, используя Json.NET, но в возвращаемой строке есть обратная косая черта, которая, в свою очередь, терпит неудачу в разборе 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. Как я могу удалить их.

Ответы

Ответ 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, поэтому избегая всего.

Ответ 2

string str = "Your string with slashes";

str = JToken.Parse({your string here}).ToString();