我想创建一个JSON文件,作为简单的Web原型制作练习的一部分。 LinqPAD非常适合以我需要的形式从我的数据库访问数据,但是我不能很容易地将它作为JSON来获取。
我并不关心架构是什么,因为我可以调整我的JavaScript来处理返回的内容。
这可能吗?
答案 0 :(得分:20)
更流畅的解决方案是将以下方法添加到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);
}
然后你可以在任何你喜欢的查询中使用它们:
Enumerable.Range(1, 10)
.Select(i =>
new
{
Index = i,
IndexTimesTen = i * 10,
})
.DumpJson();
我分别添加了“ToJson”,因此它可以与“Expessions”一起使用。
答案 1 :(得分:10)
这不是直接支持的,我已经打开了一个功能请求here。如果您也觉得有用,请投票给它。
目前的解决方法是执行以下操作:
System.Web.Extensions.dll
System.Web.Script.Serialization
new JavaScriptSerializer().Serialize(query).Dump();
答案 2 :(得分: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;
}
使用 .DumpJson()作为.Dump()
来呈现结果。如有必要,可以使用不同的签名覆盖更多.DumpJson()
。
答案 3 :(得分:2)
从版本4.47开始,LINQPad可以导出内置的JSON。结合新的lprun.exe
实用程序,它还可以满足您的需求。