- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个查询,其中包含包含多个产品的类别。我也根据查询和输出中的类别和产品对其进行了分组。然而,在构建API代码时,我遇到了它们之间的逗号问题。到目前为止,我到处都放了逗号,最后也放了逗号,但我不想在类别或产品组的末尾添加它们。这是查询:
SELECT P.PRODUCT_ID,P.PRODUCT_NAME,PC.PRODUCT_CAT,PC.PRODUCT_CATID,PR.PRICE,PR.MONEY,PC.HIERARCHY
FROM PRODUCT_CAT PC
LEFT OUTER JOIN PRODUCT P ON P.PRODUCT_CATID=PC.PRODUCT_CATID
LEFT OUTER JOIN PRICE PR ON P.PRODUCT_ID=PR.PRODUCT_ID
WHERE P.IS_SALES=1 AND P.IS_EXTRANET=1 AND PR.PRICE IS NOT NULL
GROUP BY PC.HIERARCHY,PC.PRODUCT_CAT,P.PRODUCT_ID,P.PRODUCT_NAME,PC.PRODUCT_CATID,PR.PRICE,PR.MONEY
ORDER BY PC.HIERARCHY,P.PRODUCT_NAME
和我的输出:
{"status":"ok","count":<cfoutput>#row#</cfoutput>,"data":[
<cfoutput query="get_json" group="product_catid">
{"cat":#product_cat#,"cat_id":#product_catid#,"products":[
<cfoutput group="product_id">
{"id":#product_id#,"name":#product_name#,"price":#tlformat(price,2)#,"currency":#money#},<!-- i dont want this comma to be added in the end of the products group --->
</cfoutput>
]},<!-- i dont want this comma to be added in the end of the categories group --->
</cfoutput>
]}
你可以看看the live output of it here .如您所见,甚至在分组产品的末尾添加了逗号,在类别组的末尾也添加了逗号,但我不希望它们出现在那里。我该如何解决这个问题?
最佳答案
不要推出自己的 JSON。有很多现有选项可以完成更彻底的工作,并正确处理值中嵌入的特殊字符(您当前的代码没有)。只需创建必要的 CF 结构并使用 serializeJSON .当然,CF 实现有一些怪癖,因此您也可以考虑使用 JSON projects on github.com 之一.无论哪种方式,都比自己做要好。
无论如何,在您的情况下,data
元素只是 []
结构数组 {}
。每个结构代表一个类别,其中包含一个 products
数组。
{
"data":[ <--- array --->
{"cat":xxx, "products":[ <!--- array of products --->], ... }
, {"cat":yyy, "products":[ <!--- array of products --->], .. }
]
}
要创建元素,只需在循环之前初始化数据数组:
<cfset dataArray = []>
在外循环中,为每个类别创建一个结构:
<cfoutput query="get_json" group="product_catid">
<!--- create new category structure --->
<cfset category = {}>
<cfset category["cat"]= product_cat>
.... other keys ....
<cfset category["products"] = []>
...
在您的内部循环中,创建产品并将它们添加到您的类别中:
<cfoutput group="product_id">
<!--- create new product element --->
<cfset prod = {}>
<cfset prod ["id"] = product_id>
... other keys ...
<!--- save product to your category --->
<cfset arrayAppend(category.products, product)>
</cfoutput>
然后在关闭循环之前,将类别保存到您的 dataArray
<!--- save to data array --->
<cfset arrayAppend(dataArray, category)>
</cfoutput>
最后把状态和数据包起来,序列化:
<cfset result = {}>
<cfset result["status"] = "ok">
<cfset result["count"] = row>
<cfset result["data"] = dataArray>
<!--- debug serialized results --->
<cfdump var="#serializeJSON( result )#">
关于mysql - 当此 cfoutput 被分组时,在 cfoutput 的末尾添加逗号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19932835/
我有一个查询,其中包含包含多个产品的类别。我也根据查询和输出中的类别和产品对其进行了分组。然而,在构建API代码时,我遇到了它们之间的逗号问题。到目前为止,我到处都放了逗号,最后也放了逗号,但我不想在
我正在遍历查询的结果,我需要限制显示的行数。我需要使用 cfoutput因为我正在使用 group属性,我不能使用 maxrows因为不会显示所有行。 我尝试使用 内 ,但这会引发错误。 我怎样才能突
我有一份大报告。 SQL 只需要大约 60 秒的时间来运行,但 PDF 的实际呈现是一直占用的时间。它有数百页。 请求超时的全局设置设置为 240 秒。 我正在覆盖此报告的全局设置并将值设置为任意高(
它只是这么长的标签,我经常使用它。 例如 value="#FORM.LastName#" /> 变成 value="#FORM.LastName#" /> 也许我只是要求太多。 最佳答案 理想
我被迫/付钱从事 Legacy ColdFusion 项目(我是一名普通的 C# 程序员),CF 的一个特点是他们有自己的标签,应该与 HTML 混合(坏坏决定,IMO,因为即使是“以 cf 规则开头
我有多个文件使用相同的模板 cfm 文件 我在模板文件中有大量页面内容 content.cfm我可以通过各种变量名检索:content_home content_contact title_home
我有一个包含 2 个查询的结构。我有一个带有查询之一的“键”的变量,我想使用该变量动态输出查询。我的基本代码: ... ... ... 这给了我错误标签cfoutput的属性验证错误。 cfou
我必须从 ajax 查询中呈现以下 html 标记。问题是 cfml 将任何以 # 为前缀的字符串视为标识符。所以我收到一个错误。
我迟到了,因为我试图 catch cfscript 语法。我在 cfscript 中创建了一个简单的查询,它可以很好地执行和转储出正确的数据: qPositive = new Query(dataso
当我们网站上的小部件无法加载时,我正在使用 cftry catch 向我们的警报框发送电子邮件。 cfcatch.message 和 cfcatch.detail 没有提供足够的详细信息来说明哪个页面
#name# 背景颜色 # 破坏了它,如何在不关闭 cfoutput 标签(或使用 css rgb() )的情况下显示 #? 最佳答案 # 符号可以在 cfoutput 标记内和其他区域(例如
我试图只向这个输出添加某些行。目前此输出添加所有行,用于 最后的总计行 #numberFormat(ArraySum(ListToArray(ValueList(qrySummary.secThre
我是一名长期的 CF 开发人员,正尝试使用 Flash Builder 进行 Flex 移动开发,但我在尝试从简单的数据库查询输出结果时感到沮丧。 我正在寻找与此类似的东西...... 最佳
我有一个获取表中所有员工计数的查询: emp_namelast | emp_namefirst | employeetotal | year_cse1 ------------------------
我有一个 将地址变量放在表中。我遇到的问题是这些变量有时为空,但由于换行符它们仍然占用表中的空间。 #getMeeting.meetingDemographicsAd
我正在 cfm 文件的脚本标签中构建一个 JSON 字符串。我想找到一种方法将此 JSON 字符串放入 cfoutput,以便页面可以显示 JSON。 我目前只是document.write()在浏览
我在“id=”tak_id””的更新表单中有一个下拉列表是从查询“takType”中填充的。下拉框有三个选项“sms, chat, tweet” 三个不同的值“001,002,003”。 字段中的 S
如果我在 ColdFusion 中执行类似的操作: foo="#foo()#" 生成的 HTML 前面有一个空格: foo=" BAR" 但是,如果它不是函数调用,它就可以正常工作,即: foo="
我收到一条错误消息,指出当标签使用属性“query”时,我无法嵌套 cfoutput 标签。我认为这暗示我将这两个 cfoutput 标签输出的查询结合起来。 问题是,第一个 cfoutput 标记输
我正在使用 在母版页中包含各种页面。在我的母版页中,所有正文内容都包含在 中标签。但是我注意到在测试之后,包含的 .cfm 页面看不到 标签,因此不显示动态数据。
我是一名优秀的程序员,十分优秀!