2013-08-23 14 views
21

Wydaje mi się to tak proste, że muszę to przesadzić.Jak wyprowadzić ciąg Json jako JsonResult w MVC4?

TL; DR;

Jak zmodyfikować poniższy kod, aby zwrócić obiekt Json zawarty w łańcuchu, a nie ciąg zawierający json?

public ActionResult Test() 
{ 
    var json_string = "{ success: \"true\" }"; 
    return Json(json_string, JsonRequestBehavior.AllowGet); 
} 

Ten kod zwraca łańcuch json dosłownego zawierający:

"{ success: "true" }" 

Jednak chciałbym go do zwrotu json zawartej w ciągu:

{ success: "true" } 

Nieco dłużej wersja

Próbuję szybko się obronić pe niektóre zewnętrzne wywołania api i po prostu chcę przekazać te wyniki przez moje "api" jako fałszywą odpowiedź na teraz. Obiekt json jest nietrywialny - coś w kolejności od 10 000 "linii" lub 90 KB. Nie chcę tworzyć silnie wypisanych obiektów dla całej zawartości tej jednej odpowiedzi json, aby można było uruchomić go przez deserializer - tak to się skończyło.

Więc podstawowa logika w moim kontroler jest:

  1. połączeń externall api
  2. Store wynik ciąg żądanie WWW do var (zob json_string powyżej)
  3. Wyjścia te wyniki jako JSON (nie ciąg) przy użyciu metody JsonResult Json()

Każda pomoc jest bardzo doceniana ... umysł topi się.

+0

Wystarczy znaleźć odpowiedź w „związanych z” Pytania bocznym moim pytaniem: http://stackoverflow.com/a/3991940/298758 ** To pytanie (moje) jest prawie duplikatem ** – longda

Odpowiedz

37

Cały punkt metody pomocniczej Json() polega na serializacji jako JSON.

Jeśli chcesz powrócić surowe materiały, zrobić bezpośrednio:

return Content(jsonString, "application/json"); 
+0

Dzięki! To działa! Było to zdecydowanie przesadzone. : D – longda

40
public ActionResult Test() 
{ 
    return Json(new { success = true }, JsonRequestBehavior.AllowGet); 
} 
+3

to, czego szukam. dzięki –

+3

Możesz ustawić JsonResult jako typ zwrotny zamiast ActionResult. – Spilarix