Как экспортировать данные из LinqPAD как JSON?

Я хочу создать файл JSON для использования в рамках простого веб-прототипирования. LinqPAD идеально подходит для доступа к данным из моей БД только в той форме, в которой я нуждаюсь, однако я не могу получить ее как JSON очень легко.

Мне все равно, что такое схема, потому что я могу адаптировать свой JavaScript для работы с тем, что возвращается.

Возможно ли это?

Ответ 1

Более свободное решение заключается в добавлении следующих методов в файл "Мои расширения" в Linqpad:

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);
}

Затем вы можете использовать их как в любом запросе:

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

Я добавил "ToJson" отдельно, чтобы его можно было использовать с "Expessions".

Ответ 2

Это напрямую не поддерживается, и я открыл здесь функцию здесь. Голосуйте за него, если вы также найдете это полезным.

Обходной путь теперь состоит в том, чтобы сделать следующее:

  • Установите язык в С# Statement (s)
  • Добавьте ссылку на сборку (нажмите F4) на System.Web.Extensions.dll
  • В том же диалоговом окне добавьте импорт пространства имен в System.Web.Script.Serialization
  • Используйте следующий код, чтобы вывести ваш запрос как JSON
new JavaScriptSerializer().Serialize(query).Dump();

Ответ 3

Есть решение с Json.NET, поскольку оно имеет отступы форматирования и корректно отображает даты Json. Добавьте Json.NET из NuGet и обратитесь к Newtonsoft.Json.dll в запрос "Мои расширения", а также следующий код:

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;
}

Используйте .DumpJson() как .Dump() для рендеринга результата. При необходимости можно переопределить больше .DumpJson() с различными сигнатурами.

Ответ 4

Начиная с версии 4.47, LINQPad имеет возможность экспортировать встроенный JSON. В сочетании с новой утилитой lprun.exe она также может удовлетворить ваши потребности.

http://www.linqpad.net/lprun.aspx