Mam akcję zwracającą proste json. Do celów demonstracyjnych wkleję przykładowy kod. Proste klasy do serializacji:Podwójne cytaty w zwracanym jsonie
public class Employee
{
public string FullName { get; set; }
}
działaniem która zwraca json:
public JsonResult Test()
{
var employee = new Employee { FullName = "Homer Simpson" };
var serializer = new JavaScriptSerializer();
var json = serializer.Serialize(employee);
return Json(json, JsonRequestBehavior.AllowGet);
}
Oto gdzie jestem zdezorientowany. Kiedy wywołać tę akcję z przeglądarki i spojrzeć na odpowiedzi z Skrzypek, jest to wynik:
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\"}"
Zakładka „JSON” w Fiddler czyta „Wybrana odpowiedź nie zawiera poprawny tekst JSON”. Poprawna odpowiedź powinna być tak:
"{"FullName":"Homer Simpson"}"
Co tu się dzieje? Dzięki
' "{\" FullName \ ": \" Homer Simpson \ "}"' jest wersja uciekł napisanego obiektu JSON. Kiedy zostanie przeanalizowany, silnik zmieni go w '{" FullName ":" Home Simpson "}'. Ponieważ jest on otoczony cudzysłowami poza nawiasami klamrowymi, wewnętrzne cudzysłowy muszą zostać zmienione lub będziesz mieć niepoprawny ciąg. –
Rozumiem, ale czy skrzypek nie powinien przetworzyć zwróconego ciągu na obiekt JSON i pokazać JSON w zakładce JSON? –