2011-08-15 18 views
7

Basit bir json döndüren bir işlem yapıyorum. Gösterim amaçlı örnek kod yapıştırırım. Basit sınıf seri hale getirmek için:döndürülen jsondaki çift tırnak

public class Employee 
{ 
    public string FullName { get; set; } 
} 

json döndürür eylemi: Kafam karışık nerede

İşte
public JsonResult Test() 
{ 
    var employee = new Employee { FullName = "Homer Simpson" }; 
    var serializer = new JavaScriptSerializer(); 
    var json = serializer.Serialize(employee); 

    return Json(json, JsonRequestBehavior.AllowGet); 
} 

olduğunu.

HTTP/1.1 200 OK 
Server: ASP.NET Development Server/10.0.0.0 
Date: Mon, 15 Aug 2011 20:52:34 GMT 
X-AspNet-Version: 4.0.30319 
X-AspNetMvc-Version: 3.0 
Cache-Control: private 
Content-Type: application/json; charset=utf-8 
Content-Length: 34 
Connection: Close 

"{\"FullName\":\"Homer Simpson\"}" 

Fiddler'da "JSON" sekme "seçilen tepki geçerli JSON metin içermiyor" okur: Ben tarayıcıdan bu eylemi arayıp Fiddler ile tepki baktığımızda bu sonucudur. geçerli bir yanıt böyle olmalı: Burada neler oluyor

"{"FullName":"Homer Simpson"}" 

? JSON kendinizi serialize gerekmez Teşekkür

+1

' "{\" FullName \ ": \" Homer Simpson \ "}"' kaçan versiyonu telli JSON nesnesinin. Ayrıştırıldığında, motor onu “{" FullName ":" Home Simpson "}' a çevirir. Kıvrık parantezlerin dışında tırnak içinde çevrildiği için, iç tırnaklar kaçmak veya geçersiz bir dizgeye sahip olmanız gerekir. –

+0

Bunu anlıyorum ama geri dönen dizeyi JSON nesnesine ayrıştırıp JSON sekmesindeki JSON'u göstermemeli miyim? –

cevap

16

Bunu yapmak gerekir:

public JsonResult Test() { 
    var employee = new Employee { FullName = "Homer Simpson" }; 
    return Json(employee, JsonRequestBehavior.AllowGet); 
} 

Kodunuz etkin bir iki kez serializes, size bir dize sonucunu veren.

geçerli bir yanıt aslında bu olmalıdır:

(çevreleyen tırnak işareti olmadan)
{"FullName":"Homer Simpson"} 

+0

Şimdi bu mantıklı! Teşekkürler. Homer Simpson lol için –

+0

+ 1 –

İlgili konular