Как экспортировать данные из 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