2016-07-11 22 views
1

Ich baue einen Api-Controller und ich brauche, um meine Liste zu JSON serialisiert als meine Aktion result.but Es scheint, dass solche Aussagen nichtReturn JSON Ergebnis aus einem Api-Controller

return Json(data, JsonRequestBehavior.AllowGet); 

Wie kann funktionieren Ich erreiche das?

+0

Könnten Sie die gesamte Aktionsmethode veröffentlichen? Funktioniert es, wenn Sie Dummy-Daten wie 'var data = new List {" eins "," zwei "};'? – Win

Antwort

1

Wie Sie erwähnt haben, dass Sie WEB-API verwenden, nehme ich an, dass es die JsonFormatter konfiguriert hat. Abgesehen davon ist die Verantwortung für die Konvertierung Ihres Aktionsergebnisses in ein JSON nicht von Ihrer Aktion, sondern von dem Medientyp-Formatierer, der als Teil des Content-Verhandlungsprozesses ausgewählt wurde.

Das heißt, es ist genug für Ihre Aktion, den tatsächlichen Listentyp zurückzugeben und der Formatierer des Web-API-Medientyps kümmert sich um die Formatierung zu JSON.

Angenommen, data ist ein List<Foo>, wobei Foo ein Typ ist, den Sie erstellt haben. Es ist genug für Ihre Controller-Aktion zu sein:

public List<Foo> GetFoo() 
{ 
    var data = GetListOfFoo(); 
    return data; 
} 
+0

Sehr gut gesagt, ich brauchte das in meinem Code config.Formatters.JsonFormatter.SupportedMediaTypes.Add (neuer MediaTypeHeaderValue ("text/html")); – Pouyan

1

Haben Sie versucht, eine JSON-Serialisierungsklasse zu verwenden?

ich Erfolg gehabt haben mit den nach vorn in diesem Artikel setzen Ideen: Serializing a list to JSON

Oder, wenn Sie Serialisierung nicht verwenden möchten, das Beispiel für ein Ergebnis Aktion JSON Verwendung in MSDN verwendet nur eine generische Liste Objekt.