gpt4 book ai didi

json - 使用 ColdFusion 为 HighCharts 格式化 JSON 数据

转载 作者:行者123 更新时间:2023-12-05 01:16:03 26 4
gpt4 key购买 nike

所以我正在使用 HighSlide 和 ColdFusion 制作饼图。

为简单起见,对于数据,它需要这样的字符串:

data: [{name: 'Jane',y: 13}, {name: 'John',y: 23}, {name: 'Joe',y: 19}]


我为完成此任务所做的工作是遍历我的查询结果并创建如下字符串:

<cfloop query="getAreaCounts">
<cfset areaList = listAppend(areaList, "{name: '#name#',y: #y#}")>
</cfloop>


我知道必须有一种更简单/更智能的方法吗?由于这是 JSON 数据,我想我可以这样做:

<cfoutput>#SerializeJSON(getAreaCounts)#</cfoutput>


但这会返回一个像这样的 JSON 字符串,highcharts 不会处理:

{"COLUMNS":["Y","NAME"],"DATA":[[8,"Area1"],[7,"Area2"],[1,"Area3"],[1,"Area4"]]}

任何帮助我指明正确方向的人都会很棒。我是否需要更深入地研究 JSON - howto?

最佳答案

您需要将查询转换为结构数组,然后在该数组上运行 serializeJSON()

下面是我在处理大量查询和 JSON 时经常使用的方法。我想我是从 Ben Nadel 的网站上得到的,然后将其转换为 cfscript。我会在发布此答案后尝试查找博文。

public array function queryToArray( required query qry ) {
var columns = arguments.qry.getColumnNames();
var ofTheJedi = [];

for( var i = 1; i LTE qry.recordCount; i++ ) {
var obj = {};

for( var k = 1; k LTE arrayLen( columns ); k++ ) {
structInsert( obj, columns[ k ], arguments.qry[ columns[ k ] ][ i ] );
}

arrayAppend( ofTheJedi, obj );
}

return ofTheJedi;
}

所以,在你的情况下你会做这样的事情:

<cfset myJSON = queryToArray( getAreaCounts ) />
<cfoutput>#serializeJSON( myJSON )#</cfoutput>

编辑:这是启发上述方法的 Ben 的博客文章:http://www.bennadel.com/blog/124-Ask-Ben-Converting-a-Query-to-an-Array.htm

关于json - 使用 ColdFusion 为 HighCharts 格式化 JSON 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9946188/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com