2010-12-09 7 views
0

Ich habe den folgenden Code verwendet, um JSON-Daten zu generieren.Wie formatiere ich JSON-Ausgabe von ASP.NET MVC 2

[HttpGet] 
    public ActionResult MarketList() 
    { 
     var mkt = db.GetDailyList(); 
     return Json(mkt, JsonRequestBehavior.AllowGet); 
    } 

Jetzt gibt JSON im folgenden Format zurück;

[{"gainers":"CAP","date":"Dec 9 ","Open":30.87,"Close":32.41,"change":1.54},{"gainers":"AP","date":"Dec 9 ","Open":20.00,"Close":21.00,"change":1.00}] 

was ich will, ist, Daten im folgenden JSON-Format zurückzugeben;

[{"dailygainers":{"gainers":"CAP","date":"Dec 9 ","Open":30.87,"Close":32.41,"change":1.54}},{"dailygainers":{"gainers":"AP","date":"Dec 9 ","Open":20.00,"Close":21.00,"change":1.00}}] 

Wie kann ich dies mit MVC 2 bitte tun?

Danke

+0

keine Freude gnome ..ich den Code der folgenden, und das Ergebnis war das gleiche geändert; Öffentlich JsonResult TopGainers() { IEnumerable list = db.GetTopGainers(); return Json (Liste, JsonRequestBehavior.AllowGet); } – femi

Antwort

0

Ändern Sie die Aktion zu JsonResult. Ich benutze diesen Ausschnitt von dem, was ich in der Vergangenheit benutzt habe. Beachten Sie, dass ich dies verwendet habe, um eine Dropdown-Liste dynamisch zu füllen.

Homecontroller

[HttpGet] 
public JsonResult GetSubjects(string term) 
{ 
    IEnumerable<Textbook> subjects = _repository.GetSubjects(term); 
    return Json(subjects, JsonRequestBehavior.AllowGet); 
} 

Ansicht

<p> 
<label for="Subject">Subject</label> 
<select name="Subject" id="Subject"></select> 
</p> 

jQuery

$("#Term").change(function() { 
    var term = $("#Term > option:selected").attr("value"); 
    var items = "<option>Select</option>"; 
    $.getJSON(host + "/Home/GetSubjects/" + term, function (data) { 
     $.each(data, function (i, d) { 
      items += "<option value='" + d.Subject + "'>" + d.Subject + "</option>"; 
     }); 
     $("#Subject").html(items); 
    }); 
}); 
+0

danke aber das half nicht ... ich änderte den Code, um JsonResult zu verwenden, aber es gab immer noch die gleiche Ausgabe .. Die Sache, die ich bemerkte, ist jeder JSON-Eintrag hat 'daygainers' davor..das scheint der zu sein Hauptunterschied..wo, um es im Code zu sagen? danke – femi

+0

Ich würde die GetDailyList() Methode betrachten, sie ändern, um eine aufzählbare Liste zurückzugeben. Vielleicht ändern var mkt = db.GetDailyList(); zu IEnumerable list = db.GetDailyList(); – gnome

+0

nein Freude gnome ..i änderte den Code in das folgende und das Ergebnis war das gleiche; public JsonResult TopGainers() {IEnumerable list = db.GetTopGainers(); Json zurückgeben (Liste, JsonRequestBehavior.AllowGet); } - – femi

1

aber für alle anderen, die auf dieses Problem stolpert hatte ich etwas Ähnliches zu tun, und ich Linq, es zu tun .

So benennen Sie die neue var den Namen des Containers und es sollte es tun!

var formatedList = (new {dailygainers = db.GetDailyList()});