2012-03-27 4 views
6

Kontext
Sprache: C#
Platform Version: Microsoft .NET Framework 4.0
Betriebssystem: Windows 7 Professional (64-bit)
Constraints: Microsoft MVC.Net 3.0Get Verschönerte JSON von MVC 3 JsonResult

Problem
ich mich in diesen Tagen eine Menge in einem Browser auf JSON suchen finden, einen Browser an einem Controller Aktion oder eine andere auf meinem lokalen dev-Server zeigen und JS Parsen ON visuell, um sicherzustellen, dass alles so formatiert wird, wie wir es möchten. Die JSON durch die MVC 3 Serializer (oder die JSON.Net Serializer) zurück immer geben eine minimierte String, so dass ich aufzuwickeln mit etwas wie folgt aus:

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

Frage
ich wirklich möchte einen Weg finden, zumindest während der Fehlersuche, die JsonResult zu sein „prettified“ zu bekommen, so dass es wie folgt aussieht:

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

ich bin mir dessen bewusst severalonlinetools, mit dem Sie JSON einfügen und formatieren können. Das ist ein zusätzlicher Schritt und kostet mich viel Zeit. Ich würde eine programmatische Lösung bevorzugen. Ich möchte auch in der Lage sein, es über die Konfiguration oder eine # if Compiler-Direktive ein-/auszuschalten.

Ich habe bereits eine oberflächliche Suche diesbezüglich durchgeführt und stolpere auf this post on Stack Overflow. Das angegebene Codebeispiel ist jedoch ziemlich unvollständig. Es gibt auch ein paar Links zur Verfügung gestellt, aber sie scheinen tot zu sein.

In jedem Fall würde ich gerne einen Weg finden, "verschönerte" JSON aus einem ActionResult zu bekommen. Irgendwelche Hilfe appredciated.

Der folgende Quellcode reproduziert die ursprüngliche, nicht verschönerte JSON-Zeichenfolge, die ich als Beispiel angegeben habe. Fühlen Sie sich frei zu kopieren/einfügen/bearbeiten.

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; } 
    } 
} 
+1

Wie wäre es mit einer Browser-Erweiterung (z. B. https://addons.mozilla.org/en-US/firefox/addon/jsonview/), die automatisch den Inhalt von "application/json" verschönert? – pjumble

+1

Das integrierte Entwicklungstool von Chrome und Firebug verfügen jetzt über einen Vorschaumodus, der automatisch eine gute hierarchische Ansicht von JSON bietet, die vom Server zurückgegeben wurde. – StriplingWarrior

+0

Hey Leute. Danke für all die tollen Antworten. Ich habe auch einen Visual Studio Visualizer gefunden, mit dem Sie JSON in Visual Studio formatieren können.Ich habe damit ein bisschen gespielt, und es funktioniert in Studio 2010. http://jsonviewer.codeplex.com/wikipage?title=More%20screen%20shots&referringTitle=Home –

Antwort

15

nicht viel von einer Antwort, aber wenn Sie Ihre Json Serializer aus dem in einem (JavaScriptSerializer) gebaut wechseln Json.NET (die eine Reihe von advantages über dieses Thema hat), können Sie etwas tun:

JsonConvert.SerializeObject(myObjectDestinedForJSON, Formatting.Indented); 

Text & Tabellen zu den Einstellungen hier: http://james.newtonking.com/projects/json/help/

+0

Die eingebaute ist nicht "DataContractSerializer". Es ist 'JavaScriptSerializer'. –

+0

Duh! dicke Finger. – EBarr

+0

Tut genau das, was ich gefragt habe. Super einfach. Vielen Dank. Die neue Version von Studio wird sowieso mit JSON.Net als Serializer ausgeliefert, also keine Haut von meinem Rücken zum wechseln. –

Verwandte Themen