首页
学习
活动
专区
圈层
工具
发布

Coldfusion
EN

Stack Overflow用户
提问于 2019-08-29 13:26:19
回答 2查看 515关注 0票数 0

目前,我得到了这个输出(QueryBean):

但是我想要“正常”的JSON输出,比如这个:

代码语言:javascript
复制
[
  {
    "EventType": "active",
    "InstanceId": "6728E65C-XXXX-XXXXX",
    "CustomerId": "1000324234",
    "Name": "bilderbuchverein Hermsen"
    "Amount": 999999,
    "StartDate": "August, 01 2019 00:00:00",
    "ExpirationDate": null
  },
  {
    "EventType": "active",
    "InstanceId": "956FA492-XXXX-XXXXX",
    "Name": "Phantasialand"
    "CustomerId": "12345678999",
    "Amount": 123456789,
    "StartDate": "August, 14 2019 00:00:00",
    "ExpirationDate": null
  }
]

如何更改输出格式?我的函数有参数produces="application/json"

代码语言:javascript
复制
<cffunction name="listEvents" access="remote" returnType="any" produces="application/JSON" httpmethod="GET" restpath="/events">
    <cfquery datasource="hostmanager" name="plannedInstances">
    SELECT * FROM licenses
    </cfquery>
    <cfreturn plannedInstances>
</cffunction>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-09-04 08:07:34

要将JSON输出数据作为一个结构数组,可以使用应用程序级别的定义。在Application.cfc中,通过添加this.serialization.serializeQueryAs = "struct",可以将JSON输出数据序列化为一个结构数组,如下所示。

代码语言:javascript
复制
[
  {
    "CATEGORYID":20,
    "CATEGORYNAME":"php",
    "CATEGORYDESC":"php"
  },
  {
    "CATEGORYID":21,
    "CATEGORYNAME":"cf",
    "CATEGORYDESC":"cf"
  },
  {
    "CATEGORYID":22,
    "CATEGORYNAME":".Net",
    "CATEGORYDESC":".net"
  }
]

我在测试表中使用了相同的代码。(请参见示例代码结果屏幕截图)

此外,您还可以参考SerializeJSON的“查询序列化的附加格式”--我认为您不能用produces="application/json"来处理这个问题

我希望这对你有用!

票数 1
EN

Stack Overflow用户

发布于 2019-08-29 15:22:04

要达到你的目标,有两个步骤。

  1. 创建并返回结构数组,而不是查询(完全基于CFML端)
  2. 使用ParseJson方法在jQuery中解析来自CF的响应。

下面是一个以JSON格式返回结构数组的示例。它创建一个数组,并在查询循环中使用单独的结构填充它。插入查询列名作为结构键,最后将结构附加到根数组中。最后,从函数返回该数组。

代码语言:javascript
复制
<cffunction name="sampleCall"  access="remote" returntype="any" returnformat="JSON">

        <cfquery name="read" datasource="myDataSource">
            SELECT * FROM myTable limit 10
        </cfquery>
        <cfset myArray = [] >
        <cfloop query="read">
            <cfset myStr = {} >
            <cfset structInsert(myStr, "logid", read.logid)>
            <cfset structInsert(myStr, "log_datetime", read.log_datetime)>
            <cfset structInsert(myStr, "log_Details", read.log_Details)>
            <cfset arrayAppend(myArray,myStr)>
        </cfloop>
        <cfreturn myArray / >
    </cffunction>

注意:示例使用我的查询中的示例列。您可以使用自己的列名。

如果您像下面的图像那样转储结果

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57711249

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档