19

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 解析に失敗します。これらを削除するにはどうすればよいですか。

4

4 に答える 4

21

いいえ、そうではありません

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

次の 2 つの問題が考えられます。

A) デバッガからの結果を見ています。これを確認するには、JsonConvert(私が行ったように) を一時変数に入れて、デバッガーで確認します。砂時計の右にある矢印をクリックして、 を選択しますText Visualizer

また

B) 呼び出し元のメソッドがオブジェクトを Json に再度変換しているため、すべてがエスケープされています。

于 2013-08-14T07:55:38.977 に答える
4
string str = "Your string with slashes";

str = JToken.Parse({your string here}).ToString();
于 2015-11-26T08:11:39.477 に答える