返回JSON的ColdFusion查询页面

返回JSON的ColdFusion查询页面,json,http,coldfusion,Json,Http,Coldfusion,因此,我尝试将旧的Coldfusion页面重新调整为内部DBA工具,以跟踪长时间运行的查询 页面当前以的形式进行查询,然后以表格格式显示数据: <table> <tr> <td>#GetLongRunners.spid#</td> <td>#GetLongRunners.Database#</td> </tr> </table> 除了尝试更具体地使用#

因此,我尝试将旧的Coldfusion页面重新调整为内部DBA工具,以跟踪长时间运行的查询

页面当前以
的形式进行查询,然后以表格格式显示数据:

<table>
    <tr>
        <td>#GetLongRunners.spid#</td>
        <td>#GetLongRunners.Database#</td>
    </tr>
</table>
除了尝试更具体地使用#GetLongRunners.database#之外,它似乎也不起作用。页面显示“jsonData=SerializeJSON(”,我得到一个错误:

无法将复杂对象类型转换为简单值

我对ColdFusion非常陌生,我正在尽可能地封装这个功能,所以我只需要担心发布到这个页面,然后我就可以在前端使用原始JSON

我找到的所有示例都是以一种非常不同的方式构建查询的,这样做似乎超出了我的范围

我正在描绘一种将查询输出序列化为json并将其作为json对象发送回来的简单方法,或者通过循环查询结果构建一个数组,然后将其序列化

有什么想法吗

谢谢!


<cfsetting enablecfoutputonly="true">

<!--- logic/calculation --->
<cfset jsonData = SerializeJSON( GetLongRunners )>

<!--- lastly, output the result --->
<cfoutput>#jsonData#</cfoutput>
#杰森达#
如果您使用的是CF7,请尝试。只需下载CFC并将其安装在web根目录下的某个位置即可使用

在.CFM脚本中,运行查询,创建JSONUtil实例,并调用
serializeJSON()
方法

<cfsetting enablecfoutputonly="true">
<cfquery name="GetLongRunners">.... your query here .... </cfquery>
<cfset util = createObject("component", "path.to.JSONUtil")>
<cfcontent type="application/json" reset="true"> 
<cfoutput>#util.serializeJSON(GetLongRunners)#</cfoutput>

……您的问题在这里。。。。
#util.serializeJSON(GetLongRunners)#
正如Henry所指出的,以这种方式使用.cfm文件时,额外的空白可能会出现问题。请确保在脚本的最顶端包含cfm设置。它将抑制除包装在
标记中的内容以外的所有内容的输出


老实说,我会用CFC来代替它,但每次只做一件事。如果您感兴趣,可以举一个例子,使用远程函数以及将查询对象转换为更友好的格式,即结构数组。

刚刚发现这个框仍然在CF 7>上。有CFC可以序列化Coldfusion对象o像JSON一样,您可能希望循环查询并构建数组,这在Javascript方面可能更容易处理。@Jacob-Ouch。请尝试。(编辑)我同意Bardware关于查询的看法。默认结构有点笨拙,但是…首先让它使用普通的查询对象。然后调整它。
<cfsetting enablecfoutputonly="true">
<cfquery name="GetLongRunners">.... your query here .... </cfquery>
<cfset util = createObject("component", "path.to.JSONUtil")>
<cfcontent type="application/json" reset="true"> 
<cfoutput>#util.serializeJSON(GetLongRunners)#</cfoutput>