繁体   English   中英

SQL 2008:将数据行作为JSON返回?

[英]SQL 2008: returning data rows as JSON?

我觉得这个问题就像粘土皮江射击......“拉......砰!” ..击落......但是,我相信这是值得的。

现在有很多JS框架等使用JSON,我知道这个理由很充分。 经典问题是“将数据转换为JSON的位置”。

我理解在管道中的某个时刻,你必须将数据转换为JSON,无论是在数据访问层(我在看JSON.NET)还是我相信.NET 4.x都有输出方法/序列化为JSON。

所以问题是:考虑将SQL函数输出为JSON真的是个坏主意吗?

限定符:我理解尝试输出这样的1000行并不是一个好主意 - 实际上对于Web应用程序来说这不是一个好主意,除非你真的需要。 根据我的要求,我一次可能需要100行......

答案真的是: 它取决于

如果您的应用程序是一个没有太多用处的小应用程序,那么无论如何都要在数据库中执行它。 需要注意的是, 当您的应用程序在12个月内被10倍用户使用时会发生什么

如果它能够快速,简单,轻松地在您的存储过程中实现JSON编码,而不是在您的Web代码中,并允许您将应用程序移出并使用,那么这显然是可行的方法。 也就是说,使用其他答案中提出的解决方案“正确”完成它并不需要那么多工作。

长期和短期是,采取最符合您当前需求的解决方案,同时考虑如果您将来需要更改它将产生的影响。

这就是[WebMethod](WebMethodAttribute)存在的原因。

最好将数据加载到程序块,然后将其作为JSON返回。

.NET 4支持返回json,我将它作为一个ASP.NET MVC站点的一部分来做,它非常简单明了。

我建议将转换移出sql server

我同意其他受访者的意见,即在您的应用程序代码中做得更好。 但是......理论上可以使用SQL Server使用create assembly语法在数据库中包含CLR程序 选择真的是你的。 您可以创建一个程序集来在.net中进行转换,将该程序集定义到SQL Server,然后使用包含的方法序列化为JSON作为存储过程的返回值...

最好使用标准数据访问技术加载它,然后转换为JSON。 然后,您可以在.NET中的标准对象以及客户端javascript中使用它。

如果使用.net mvc在控制器中序列化结果并输出JsonResult,则有一个方法Controller.Json()为您执行此操作。 如果使用webforms,则可以使用http处理程序和JavascriptSerializer类。

嘿,感谢所有的回复......我仍然惊讶于有多少人有时间提供帮助。

所有非常好的观点,肯定证实了我让app / layer进行转换工作的感觉 - 作为实际数据和前端之间的粘合剂。 我想我没有跟MVC或SQL-2008保持太多,所以不确定是否有一些值得追踪的掘金。

随着它的发布(在这里发布的一些链接,以及进一步的钓鱼)我暂时选择了以下操作(使用.NET 3.5并且现在没有MVC卡住了...):

  1. 将SQL数据作为数据表/ datareader获取
  2. 对可序列化列表使用简单的数据表>集合(字典)转换
  3. 因为我现在使用ASHX页面充当javascript的代理(即通过JQuery AJAX调用),在我的ASHX页面中我有:

    context.Response.ContentType =“application / json”; System.Web.Script.Serialization.JavaScriptSerializer json = new System.Web.Script.Serialization.JavaScriptSerializer();

  4. 然后我可以发出:json.serialize(<>)

可能看起来有点落后,但它工作得很好..主要的警告是,它不会一次返回大量数据。

再一次,感谢所有的回复!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM