webentwicklung-frage-antwort-db.com.de

Json.NET fügt einen Backslash hinzu, während der serielle Json-String zurückgegeben wird

Ich versuche, eine Liste mit Json.NET in eine Json-Zeichenfolge zu serialisieren, aber die Rückgabe-Zeichenfolge enthält einen Backslash, der wiederum ein Json-Parsing versagt.

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

Der obige Code wird zurückgegeben 

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

was nicht alle JSON-Parsing. Wie kann ich diese entfernen?.

16
Soham Dasgupta

Nein, tut es nicht

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

Es könnte zwei Probleme geben:

A) Sie betrachten das Ergebnis des Debuggers. Um dies zu überprüfen, setzen Sie die Variable JsonConvert (wie ich) in eine temporäre Variable und betrachten Sie sie mit dem Debugger. Klicken Sie auf den Pfeil rechts neben der Sanduhr und wählen Sie Text Visualizer.

oder

B) Die aufrufende Methode transformiert das Objekt again zu Json, um alles zu umgehen.

18
xanatos
string str = "Your string with slashes";

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

Das JSON-Objekt wird zweimal serialisiert.

Ich habe gelöst durch:

Deklaration des Operationsvertrags für das Methodenantwortformat für die Rückgabe von JSON . Ich habe die Methode geändert, um ein Objekt anstelle einer Zeichenfolge zurückzugeben.

Die Serialisierung von Jason wird automatisch hinter den Kulissen durchgeführt.

1
Hassan Shouman