【问题标题】:ColdFusion Query Page returning JSONColdFusion 查询页面返回 JSON
【发布时间】:2015-12-02 19:43:01
【问题描述】:

因此,我正在尝试将旧的 Coldfusion 页面重新用于内部 DBA 工具来跟踪长时间运行的查询。

该页面当前以<CFQUERY name="GetLongRunners"> 进行查询,然后以表格格式显示数据:

<table>
    <tr>
        <td>#GetLongRunners.spid#</td>
        <td>#GetLongRunners.Database#</td>
    </tr>
</table>

等等等等

我的目标是去除所有显示内容,并能够简单地发布到此页面,然后接收带有相同数据的 JSON。我玩过:

jsonData = SerializeJSON(#GetLongRunners#)

同时尝试更具体地使用#GetLongRunners.database#,但它似乎不起作用。页面显示 'jsonData = SerializeJSON(' 我得到一个错误:

复杂对象类型不能转换为简单值。

我是 ColdFusion 的新手,我正在尝试尽可能多地封装这个功能,所以我真的只需要担心发布到这个页面,然后我可以让原始 JSON 在前端。

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

我正在描绘一种将查询输出序列化为 json 并将其作为 JSON 对象发送回的简单方法。要么这样,要么通过遍历查询结果构建一个数组,然后对其进行序列化。

有什么想法吗?

谢谢!

【问题讨论】:

    标签: json http coldfusion


    【解决方案1】:

    如果您使用的是 CF7,请尝试JSONUtil.cfc。只需下载 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>
    

    正如亨利所说,以这种方式使用 .cfm 文件时,额外的空白可能会成为问题。确保在脚本的最顶部包含 cfsetting。它将抑制包含在&lt;cfoutput&gt; 标签中的所有除了内容的输出。

    说实话,我会为此使用 CFC,但一次只做一件事。如果您有兴趣,this thread 有一个使用远程函数以及将查询对象转换为更友好的格式(即结构数组)的示例。

    【讨论】:

      【解决方案2】:
      <cfsetting enablecfoutputonly="true">
      
      <!--- logic/calculation --->
      <cfset jsonData = SerializeJSON( GetLongRunners )>
      
      <!--- lastly, output the result --->
      <cfoutput>#jsonData#</cfoutput>
      

      【讨论】:

      • 刚刚发现这个盒子还在 CF 7 上的困难之处>。
      • 有一些 CFC 可以将 Coldfusion 对象序列化为 JSON,例如 svn.riaforge.org/cfjson/trunk/cfjson.cfc 您可能希望循环查询并构建一个数组,这在 Javascript 端可能更容易处理。
      • @Jacob - 哎哟。试试JSONUtil.cfc mentioned here。 (编辑)我同意 Bardware 关于查询的观点。默认结构有点笨拙,但是......首先让它与一个普通的香草查询对象一起工作。然后调整它。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-04
      • 1970-01-01
      • 1970-01-01
      • 2017-02-01
      • 1970-01-01
      • 2012-08-01
      相关资源
      最近更新 更多