Obtenez de l'Embellie JSON de MVC 3 JsonResult

Contexte

Langage: C#

Version De La Plateforme: Microsoft .Net Framework 4.0

Système d'exploitation: Windows 7 Professional (64 bits)

Contraintes: Microsoft MVC.Net 3.0

Problème

Je me surprends à regarder JSON beaucoup dans un navigateur ces jours-ci, en pointant d'un navigateur à un Contrôleur de l'Action ou de l'autre sur mon local serveur de dev et le parsing JSON visuellement pour s'assurer que tout est formaté de la façon dont nous voulons. Le JSON renvoyé par la MVC 3 sérialiseur (ou l'JSON.Net sérialiseur) toujours retourner une chaîne compacte, donc je me retrouve avec quelque chose comme ceci:

{"Bars":[{"Name":"Ghost Bar","Address":"2440 Victory Park Lane, 33rd Floor, Dallas, TX 75219","OpenDate":"\/Date(1208062800000)\/","Status":"Open"},{"Name":"M-Street Bar","Address":"5628 Sears Street, Dallas, TX 75206","OpenDate":"\/Date(1064811600000)\/","Status":"Closed"},{"Name":"Zephyr\u0027s Lounge","Address":"3520 Greenville Avenue, Dallas, TX 75206","OpenDate":"\/Date(981007200000)\/","Status":"Open"}]}

Question

J'aimerais vraiment trouver une solution, au moins pendant le débogage, pour obtenir le JsonResult être "embellie" de sorte qu'il ressemble plus à ceci:

{
  "Bars": [
    {
      "Name": "Ghost Bar",
      "Address": "2440 Victory Park Lane, 33rd Floor, Dallas, TX 75219",
      "OpenDate": "\/Date(1208062800000)\/",
      "Status": "Open"
    },
    {
      "Name": "M-Street Bar",
      "Address": "5628 Sears Street, Dallas, TX 75206",
      "OpenDate": "\/Date(1064811600000)\/",
      "Status": "Closed"
    },
    {
      "Name": "Zephyr\u0027s Lounge",
      "Address": "3520 Greenville Avenue, Dallas, TX 75206",
      "OpenDate": "\/Date(981007200000)\/",
      "Status": "Open"
    }
  ]
}

Je suis conscient de plusieurs en ligne outils qui vous permettra de coller et le format JSON. Le est une étape supplémentaire, et me coûte beaucoup de temps. Je préfère une solution de programmation. Je tiens également à être en mesure de l'activer/désactiver via la configuration ou un #si la directive de compilation.

Je l'ai déjà fait une rapide recherche à ce sujet et pour trouver ce post sur Stack Overflow. Toutefois, le code de l'exemple est tout à fait incomplète. Il ya aussi un couple de liens fournis, mais ils semblent être morts.

En tout cas, j'aimerais trouver un moyen d'obtenir "l'embellie" JSON d'un ActionResult. Toute aide appredciated.

Le code source suivant reproduit l'initiale de l'onu-embellie chaîne JSON que j'ai donné comme un exemple. N'hésitez pas à copier/coller/modifier.

using System.Collections.Generic;
using System.Text;
using System.Web.Mvc;
namespace PrettyJsonResult.Controllers
{
public class DefaultController : Controller
{
public JsonResult Index()
{
var foo = new Foo();
foo.Bars.Add(new Bar { Address = "2440 Victory Park Lane, 33rd Floor, Dallas, TX 75219", Name = "Ghost Bar", Status = "Open" });
foo.Bars.Add(new Bar { Address = "5628 Sears Street, Dallas, TX 75206", Name = "M-Street Bar", Status = "Closed" });
foo.Bars.Add(new Bar { Address = "3520 Greenville Avenue, Dallas, TX 75206", Name = "Zephyr's Lounge", Status = "Open" });
return Json(foo, "application/json", Encoding.UTF8, JsonRequestBehavior.AllowGet);
}
}
public class Foo
{
public Foo()
{
Bars = new List<Bar>();
}
public List<Bar> Bars { get; set; }
}
public class Bar
{
public string Name { get; set; }
public string Address { get; set; }
public string Status { get; set; }
}
}
  • Que penser de l'utilisation d'un navigateur-extension (par exemple, addons.mozilla.org/en-US/firefox/addon/jsonview) qui automatiquement prettifies application/json contenu?
  • Chrome intégré dans l'outil de dev et Firebug maintenant avoir un mode de prévisualisation qui vous donne automatiquement une belle vue hiérarchique de JSON retourné par le serveur.
  • Hé les gars. Merci pour toutes ces excellentes réponses. J'ai aussi trouvé un Visual Studio Visualizer qui vous permet format JSON dans Visual Studio. J'ai joué avec elle un peu, et avoir de travail en Studio 2010. jsonviewer.codeplex.com/...
InformationsquelleAutor Eric Burcham | 2012-03-27