2012-03-27 13 views
6

प्रसंग
भाषा: सी #
प्लेटफ़ॉर्म संस्करण: माइक्रोसॉफ्ट नेट फ्रेमवर्क 4.0
ऑपरेटिंग सिस्टम: विंडोज 7 प्रोफेशनल (64-बिट)
प्रतिबंध: माइक्रोसॉफ्ट MVC.Net 3.0MVC 3 JsonResult से prettified JSON जाओ

समस्या
मैं अपने आप को JSON में एक बहुत एक ब्राउज़र में इन दिनों, अपने स्थानीय डेव सर्वर और जे एस पार्स करने पर एक नियंत्रक कार्रवाई में एक ब्राउज़र या किसी अन्य की ओर इशारा करते देख पाते हैं यह सुनिश्चित करने के लिए दृश्यात्मक रूप से कि जिस तरह से हम चाहते हैं सब कुछ स्वरूपित किया जा रहा है। JSON MVC 3 serializer द्वारा दिया (या JSON.Net serializer) हमेशा एक न्यूनतम किया गया स्ट्रिंग लौटाने, इसलिए मैं कुछ इस तरह से हवा:

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

प्रश्न
मैं सच में करना चाहते हैं , कम से कम डीबगिंग के दौरान, एक रास्ता खोजने JsonResult "prettified" इतना है कि यह अधिक इस तरह दिखता है होना करने के लिए प्राप्त करने के लिए:

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

मैं के बारे में पता कर रहा हूँ severalonlinetools जो आपको JSON पेस्ट और प्रारूपित करने देगा। एक अतिरिक्त कदम है, और मुझे बहुत समय लग रहा है। मैं एक प्रोग्रामेटिक समाधान पसंद करेंगे। मैं कॉन्फ़िगरेशन या #if कंपाइलर निर्देश के माध्यम से इसे चालू/बंद करने में सक्षम होना चाहूंगा।

मैंने पहले से ही इसके बारे में एक कर्सर खोज कर ली है और this post on Stack Overflow पर आ गई है। हालांकि, दिया गया कोड उदाहरण काफी अपूर्ण है। प्रदान किए गए कुछ लिंक भी हैं लेकिन वे मर गए प्रतीत होते हैं।

किसी भी मामले में, मैं एक एक्शन रिसेट से "सुंदर" JSON प्राप्त करने का एक तरीका ढूंढना चाहता हूं। किसी भी मदद की सराहना की।

निम्न स्रोत कोड एक उदाहरण के रूप में दिए गए प्रारंभिक गैर-प्रीटीफाइड JSON स्ट्रिंग को पुन: पेश करेगा। कॉपी/पेस्ट/संपादित करने के लिए स्वतंत्र महसूस करें।

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

ब्राउज़र-एक्सटेंशन (उदा। Https://addons.mozilla.org/en-US/firefox/addon/jsonview/) का उपयोग करने के बारे में क्या है जो स्वचालित रूप से 'एप्लिकेशन/जेसन' सामग्री को प्रीटेट करता है? – pjumble

+1

क्रोम के अंतर्निर्मित देव उपकरण और फ़ायरबग दोनों में अब एक पूर्वावलोकन मोड है जो स्वचालित रूप से आपको सर्वर से जेएसओएन का एक अच्छा पदानुक्रमित दृश्य देता है। – StriplingWarrior

+0

अरे दोस्तों। सभी महान प्रतिक्रियाओं के लिए धन्यवाद। मुझे एक विजुअल स्टूडियो विजुअलाइज़र भी मिला जो आपको विजुअल स्टूडियो के भीतर जेएसओएन प्रारूपित करने देता है।मैंने इसे थोड़ा सा खिलौना दिया है, और यह स्टूडियो 2010 में काम कर रहा है। Http://jsonviewer.codeplex.com/wikipage?title=More%20screen%20shots&referringTitle=Home –

उत्तर

15

एक जवाब के ज्यादा नहीं है, लेकिन अगर आप एक Json.NET को (JavaScriptSerializer) (जो इस मुद्दे से परे advantages का एक समूह है) में बनाया से अपने Json serializer स्विच करते हैं तो कुछ इस तरह कर सकते हैं:

सेटिंग्स यहाँ पर
JsonConvert.SerializeObject(myObjectDestinedForJSON, Formatting.Indented); 

डॉक्स: http://james.newtonking.com/projects/json/help/

+0

अंतर्निहित एक 'DataContractSerializer' नहीं है। यह 'जावास्क्रिप्टसेरियलाइज़र' है। –

+0

दुह! वसा उंगलियों। – EBarr

+0

वही करता है जो मैंने पूछा था। सुपर सरल धन्यवाद। स्टूडियो का नया संस्करण JSON.Net के साथ serializer के रूप में जहाज के साथ जा रहा है, इसलिए स्विच करने के लिए मेरी पीठ से कोई त्वचा नहीं है। –

4

व्यावहारिक और उपयोगी सभी परिस्थितियों के लिए:

क्रोम + इस एक्सटेंशन का उपयोग करें: https://chrome.google.com/webstore/detail/chklaanhfefbnpoihckbnefhakgolnmc

यह JSON को सुंदर प्रारूपित करेगा जब यह महसूस करता है कि यह जेसन है।

संबंधित मुद्दे