Search
Close this search box.

Extension method for outputting formatted JSON in LINQPad

Very simple, but a handy way of viewing nicely-formatted JSON in LINQPad:

clip_image002

I use Json.NET as it does indented formatting, and represents JSON dates properly. To add as an extension, download Json.NET, add a reference to Newtonsoft.Json.dll to your “My Extensions” query and add the following code to your MyExtensions class:

public static object DumpJson(this object value, string description = null)

{
  return GetJsonDumpTarget(value).Dump(description);
}

public static object DumpJson(this object value, string description, int depth)

{
  return GetJsonDumpTarget(value).Dump(description, depth);
}

public static object DumpJson(this object value, string description,
                              bool toDataGrid)

{
  return GetJsonDumpTarget(value).Dump(description, toDataGrid);
}

private static object GetJsonDumpTarget(object value)

{
  object dumpTarget = value;

  // if this is a string that contains a JSON object, do a round-trip
  // serialization to format it:

  var stringValue = value as string;

  if (stringValue != null)

  {
    if (stringValue.Trim().StartsWith("{"))

    {
      var obj = JsonConvert.DeserializeObject(stringValue);

      dumpTarget =
          JsonConvert.SerializeObject(obj, Newtonsoft.Json.Formatting.Indented);

    }

    else

    {
      dumpTarget = stringValue;
    }

  }

  else

  {
    dumpTarget =
        JsonConvert.SerializeObject(value, Newtonsoft.Json.Formatting.Indented);
  }

  return dumpTarget;
}

Call with .DumpJson() on any object, and it will serialize to formatted JSON and output it. If you pass a string which is already JSON, it round-trip serializes it to get the formatted version (including converting WCF-formatted JSON dates to ISO 8601).

Makes for a very handy testing rig for REST services.

posted on Friday, May 11, 2012 7:29 PM

This article is part of the GWB Archives. Original Author:  Elton Stoneman

Related Posts