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

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