Json.NET aggiungendo backslash durante la restituzione della stringa serializzata json

Sto provando a serializzare una lista in json usando Json.NET ma la stringa di ritorno ha una barra rovesciata al suo interno, che a sua volta sta fallendo l’analisi di JSON.

var x = from d in entities.Books.ToList() select new { ID = d.ID, BookName = d.BookName }; return JsonConvert.SerializeObject(x.ToList()); 

Il codice sopra riportato restituisce

 "[{\"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\"}]" 

che fallisce tutte le analisi JSON. Come posso rimuovere questi.

No. non lo è

 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); } } 

Ci potrebbero essere due problemi:

A) Stai guardando il risultato dal debugger. Per verificare questo, Metti JsonConvert in una variabile temporanea (come ho fatto io) e guardala con il debugger. Fare clic sulla freccia a destra della clessidra e selezionare Text Visualizer .

o

B) Il metodo di chiamata sta trasformando di nuovo l’object in Json, in modo da sfuggire a tutto.

 string str = "Your string with slashes"; str = JToken.Parse({your string here}).ToString(); 

L’object JSON è serializzato due volte.

Ho risolto da:

Dichiarazione del contratto operativo del formato di risposta del metodo per restituire JSON. Ho cambiato il metodo per restituire un object anziché una stringa.

La serializzazione di Jason verrà eseguita automaticamente dietro le quinte.