Rick Strahl's Web Log

Wind, waves, code and everything in between...
ASP.NET • C# • HTML5 • JavaScript • AngularJs
Contact   •   Articles   •   Products   •   Support   •   Search
Ad-free experience sponsored by:
ASPOSE - the market leader of .NET and Java APIs for file formats – natively work with DOCX, XLSX, PPT, PDF, images and more

Prettifying a JSON String in .NET


:P
On this page:

Here’s a quick and dirty tip if you’re dealing with JSON strings that you at times need to display for debugging or simply seeing a quick view of data represented. It may be that you have an application that captures HTTP responses and you need to actually decipher the JSON that was sent to you, or you’re creating a quick and dirty admin form where you just want to dump some settings information into a screen.

As is usually the case, JSON.NET makes JSON manipulations super easy – in fact it’s a single line of code:

string jsonFormatted = JValue.Parse(json).ToString(Formatting.Indented);

Here’s how you can test this out:

[TestMethod]
public void PrettifyJsonStringTest()
{
    var test = new
    {
        name = "rick",
        company = "Westwind",
        entered = DateTime.UtcNow
    };

    string json = JsonConvert.SerializeObject(test);
    Console.WriteLine(json); // single line JSON string
           
    string jsonFormatted = JValue.Parse(json).ToString(Formatting.Indented);
            
    Console.WriteLine(jsonFormatted);
}

The code above of course is contrived as SerializeObject() also supports the Formatting.Indented option. But assume for a second that you are getting data already in string format from somewhere such as an HTTP stream or a file on disk. You then use the above code to convert into something much more readable.

In practice, it’s nice if you have any interfaces that need to display JSON in the UI. For example in West Wind Web Surge I display sent and captured HTTP content and if the result is JSON the default Raw Response output looks like this:

WebSurgeRaw

Workable but not exactly readable.

By applying formatting it sure is a lot easier to see what the JSON actually looks like:

WebSurgeFormattedJson

Likewise if you’re dealing with objects that have .ToString() methods that return JSON (as many online SDKs do!), it’s nice to have an easy way to format the result into something more readable that you can dump into the Debug console.

It’s simple solution to a not so often required problem, but I’ve run into this enough times when I forgot exactly which JSON.NET object is required to handle this, so I wrote it down for next time for me to remember and maybe this might be useful to some of you as well.

this post created and published with Markdown Monster
Posted in .NET  C#  

The Voices of Reason


 

Dan
July 06, 2016

# re: Prettifying a JSON String in .NET

After you formatted the JSON response, how did you do syntax highlighting?

Rick Strahl
July 06, 2016

# re: Prettifying a JSON String in .NET

Easiest probably to use highlight.js. Above in West Wind WebSurge I'm using AceEditor.js.

paweł
July 30, 2019

# re: Prettifying a JSON String in .NET

same, but in one line:

var jsonFormatted = JsonConvert.SerializeObject(test, Formatting.Indented)


West Wind  © Rick Strahl, West Wind Technologies, 2005 - 2019