从JSON中选择值

时间:2014-04-08 23:18:01

标签: json coldfusion

如果我在查询中执行以下操作:

<cfdump var="#serializeJSON(findglobal)#">

我得到以下内容:

{
    "COLUMNS": [
        "DELIVERED_PERCENTAGE",
        "UNIQUE_PERCENTAGE",
        "SPAM_PERCENTAGE",
        "DROP_PERCENTAGE",
        "REQUEST_PERCENTAGE",
        "BOUNCE_PERCENTAGE",
        "DEFERRED_PERCENTAGE",
        "PROCESSED_PERCENTAGE",
        "OPEN_PERCENTAGE",
        "BLOCKED_PERCENTAGE"
    ],
    "DATA": [
        [
            19.54,
            6.06,
            6.05,
            0.63,
            21.17,
            0.85,
            14.83,
            20.53,
            10.26,
            0.19
        ]
    ]
}

但我使用Geikoboard只能理解以下JSON格式。 所以我希望DELIVERED_PERCENTAGEUNIQUE_PERCENTAGE为下面的标签字段和所有值,例如 下面的值字段为19.54,6.06等。

{ 
"item": [ 
{ 
"value": "11234", 
"label": "Webmail", 
"colour": "FFFF10AA" 
}, 
{ 
"value": "10736", 
"label": "Phone", 
"colour": "FFAA0AAA" 
}, 
{ 
"value": "230", 
"label": "Webmail", 
"colour": "FF5505AA" 
}, 
{ 
"value": "280", 
"label": "Webmail", 
"colour": "FF0000AA" 
} 
] 
}

我是否必须手动生成JSON?

1 个答案:

答案 0 :(得分:1)

我认为这就是你要找的东西。从某个网站获得;无论是Raymon Camden还是Ben Nadel。

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

    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(OutputResult, obj );
    }

    return OutputResult;
}

你需要做这样的事情:

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