如何从LinqPAD导出数据作为JSON?

Dre*_*kes 13 json linqpad

我想创建一个JSON文件,作为简单的Web原型制作练习的一部分.LinqPAD非常适合以我需要的形式从我的数据库访问数据,但是我不能很容易地把它作为JSON.

我并不关心架构是什么,因为我可以调整我的JavaScript来处理返回的内容.

这可能吗?

Dav*_*haw 21

更流畅的解决方案是将以下方法添加到Linqpad中的"My Extensions"文件中:

public static String DumpJson<T>(this T obj)
{
    return
        obj
        .ToJson()
        .Dump();
}

public static String ToJson<T>(this T obj)
{
    return
        new System.Web.Script.Serialization.JavaScriptSerializer()
        .Serialize(obj);
}
Run Code Online (Sandbox Code Playgroud)

然后你可以在任何你喜欢的查询中使用它们:

Enumerable.Range(1, 10)
.Select(i =>
    new
    {
        Index = i,
        IndexTimesTen = i * 10,
    })
.DumpJson();
Run Code Online (Sandbox Code Playgroud)

我分别添加了"ToJson",因此它可以与"Expessions"一起使用.

  • 一旦它建立起来就更好了.非常感谢!我希望作者默认在LinqPAD中包含它.注意其他人,你必须将`System.Web.Extensions.dll`添加到_My Extensions_文档,如我的回答所述. (5认同)

Dre*_*kes 11

这不是直接支持的,我在这里打开了一个功能请求.如果您也觉得有用,请投票给它.

现在的解决方法是执行以下操作:

  • 将语言设置为C#语句
  • 添加装配参考(按F4)System.Web.Extensions.dll
  • 在同一对话框中,添加名称空间导入 System.Web.Script.Serialization
  • 使用以下代码将您的查询转储为JSON
new JavaScriptSerializer().Serialize(query).Dump();
Run Code Online (Sandbox Code Playgroud)


Yan*_*g C 9

有一个Json.NET的解决方案,因为它缩进格式,并正确呈现Json日期.从NuGet添加Json.NET,并将Newtonsoft.Json.dll引用到" My Extensions "查询以及以下代码:

public static object DumpJson(this object value, string description = null)
{
    return GetJson(value).Dump(description);
}

private static object GetJson(object value)
{
    object dump = value;

    var strValue = value as string;
    if (strValue != null)
    {
        var obj = JsonConvert.DeserializeObject(strValue);
        dump = JsonConvert.SerializeObject(obj, Newtonsoft.Json.Formatting.Indented);
    }
    else
    {
        dump = JsonConvert.SerializeObject(value, Newtonsoft.Json.Formatting.Indented);
    }

    return dump;
}
Run Code Online (Sandbox Code Playgroud)

使用.DumpJson()作为.Dump()渲染的结果..DumpJson()如有必要,可以使用不同的签名覆盖更多.