2010-12-09 66 views
0

J'ai utilisé le code ci-dessous pour générer des données JSON.comment formater la sortie JSON à partir de ASP.NET MVC 2

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

Maintenant, il renvoie JSON dans le format ci-dessous;

[{"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}] 

Ce que je veux, c'est renvoyer des données au format JSON suivant;

[{"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}}] 

Comment puis-je faire cela en utilisant MVC 2 s'il vous plaît?

Merci

+0

aucun gnome de joie ..i a changé le code à ce qui suit et le résultat était le même; public JsonResult TopGainers() { IEnumerable list = db.GetTopGainers(); return Json (list, JsonRequestBehavior.AllowGet); } – femi

Répondre

0

Modifier l'action en JsonResult. J'utilise cet extrait de ce que j'ai utilisé dans le passé. Gardez à l'esprit que j'ai utilisé ceci pour remplir dynamiquement une liste déroulante.

HomeController

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

Voir

<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

merci, mais cela n'a pas aidé ... j'ai changé le code pour utiliser JsonResult, mais il a toujours donné la même sortie .. La chose que j'ai remarqué est chaque entrée json a «dailygainers» devant lui .. qui semble être le différence principale ... où est-ce que je dois dire ceci dans le code? merci – femi

+0

Je voudrais regarder la méthode GetDailyList(), le modifier pour retourner une liste énumérable. Peut-être changer var mkt = db.GetDailyList(); à IEnumerable list = db.GetDailyList(); – gnome

+0

no joy gnome ..i a changé le code pour le suivant et le résultat était le même; public JsonResult TopGainers() {IEnumerable list = db.GetTopGainers(); return Json (list, JsonRequestBehavior.AllowGet); } - – femi

1

mais pour quelqu'un d'autre qui trébuche sur ce problème que je devais faire quelque chose de semblable et je Linq pour le faire .

Donc vous nommez le nouveau var le nom du conteneur et il devrait le faire!

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