2013-08-14 19 views
14

Bir listeyi Json.NET kullanarak json dizgisine serileştirmeye çalışıyorum ancak dönüş dizesi içinde ters eğik çizgi var, bu da bir json ayrıştırmada başarısız oluyor.Json.NET json serileştirilmiş dizgeyi döndürürken ters eğik çizgi ekleme

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

yukarıda kodu tüm JSON ayrıştırma başarısız

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

döndürür. Bunları nasıl kaldırabilirim.

+2

Bu garip, bu ters eğik çizgi sadece bana normal kaçan karakterler gibi görünüyor. Hata ayıklayıcısında bu işlevin dönüş değerini incelediğinizde, bu çıkış karakterlerini yerinde bırakacak, ancak dizenin gerçek değeri onlara sahip olmayacaktır. –

+1

Ancak Json'u bir istemci tarafından tüketirken ters eğik çizgi her türlü soruna yol açacaktır. –

+1

Ancak Google Chrome’un hizmet bitiş noktasına gittiğimde, bu bana iade ediliyor. JSON'u çevreleyen dizeleri de düşünürseniz, string olarak da. –

cevap

17

sayılı öyle değil

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

iki sorun olabilir:

A) ayıklananları sonucu bakıyoruz. Bunu kontrol etmek için JsonConvert'u geçici bir değişkene (benim yaptığım gibi) koyun ve hata ayıklayıcısına bakın. Kum saatinin sağındaki oku tıklayın ve Text Visualizer'u seçin.

veya

B) arama yöntemi böylece her kaçan Json tekrar nesne transforme edilir.

+1

'Text Visualizer' kullandım, doğru şekilde gösteriyor ama sanırım google chrome jsonu biçimlendiriyor ve kaçış karakterleri içeriyor. Ama IE'de json'u bir dosya olarak kaydetmem isteniyor ve açıldıktan sonra hala tırnakları görüyorum. –

+2

@SohamDasgupta Söylediğim gibi, belki de zincirdeki çağıran yöntemlerden biri yeniden jsonlamadır. – xanatos

+0

@xanatos "Yeniden json-ing" konusunda katılıyorum. Ben bir WebAPI projesinde x.ToList() 'i döndürdüm, metot jsonu kendi başına sonuca götürdü. Cevabınız için teşekkürler – Sincere

3
string str = "Your string with slashes"; 

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

JSON nesnesi iki kez serileştirildi.

Ben çözülür:

JSON dönmek için yöntem yanıtı formatının operasyon sözleşmesini bildirilmesi. Bir dize yerine bir nesne döndürme yöntemini değiştirdim.

Jason'ın serileştirilmesi sahne arkasında otomatik olarak yapılacaktır.

İlgili konular