如何从cfquery创建JSON?

时间:2016-01-22 19:37:29

标签: javascript json date coldfusion

这是我在JSON中放入的查询,然后在表中存储信息。当我检查表中的结果时,我看到输出不能给我我真正想要的东西。我的想法是在每个开始和结束日期之间获取所有日期。我的代码给了我结束日期。这是我的代码:

//Here is my query 
<cfquery name="myQuery" datasource="test">
    Select UserID, UserEmail, PickDateTime, DropDateTime
    From UserInfo
    Order by PickDateTime
</cfquery>

//This is my JSON 
<script>
    myJSON = {
    <cfoutput query="myQuery">
        <cfloop from="#PickDateTime#" to="#DropDateTime#" index="i" step="#CreateTimeSpan(1,0,0,0)#">
           "#currentrow#":{"ID":"#UserID#","date":"#dateformat(i,'mmddyyyy')#","email":"#UserEmail#"},  
        </cfloop>
    </cfoutput>
    }

//Here is my function that creates the table
function getData(){
    myVar="<table><tr><td>ID</td><td>Date</td><td>Email</td></tr><tbody>"
    for(key in myJSON){
        myVar+=
            "<tr>"+
            "<td>"+myJSON[key].ID+"</td>"+
            "<td>"+myJSON[key].date+"</td>"+
            "<td>"+myJSON[key].email+"</td>"+
            "</tr>"
    }
    myVar+="</tbody></table>"
    document.getElementById('myTable').innerHTML = myVar    
}
</script>

这是我的HTML:

<div id='myTable'></div>

这是我的当前输出表:

ID   Date          Email
1   01092016    example@gmail.com
2   01112016    example@gmail.com
3   01132016    example@gmail.com
3   01162016    example@gmail.com
4   01182016    example@gmail.com
5   01192016    example@gmail.com

正如你在我的输出中所看到的,我只是得到了结束日期,但我没有在两者之间得到日期。我应该从开始到结束日期获取所有日期。如果我的开始日期是2015年1月20日,而我的结束日期是2015年1月24日,我希望介于两者之间。我不确定我的JSON是否正确创建或者我的cfloop中出了什么问题。如果有人可以帮助解决这个问题,请告诉我。

2 个答案:

答案 0 :(得分:3)

将ColdFusion数据转换为JSON的最简单方法是使用SerializeJSON()函数。

自ColdFusion 8以来支持。See SerializeJSON

答案 1 :(得分:0)

请尝试此

SerializeJSON:将ColdFusion数据转换为数据的JSON(JavaScript Object Notation)表示形式。返回包含参数值的JSON表示的字符串。

但如果您使用 ColdFusion 10: SerializeJSON may results in invalid json

return loadedBillSites.Except(storedSites.Select(x=>x.SiteNumber)).Any();

要避免这种情况并使其在任何ColdFusion版本中运行,您可以执行此操作:

<cfscript>
    // Create an input string that has two different uses of the "u" character.
    input = "Hello \u1111 u+2222 world";
    // Output the original value.
    writeOutput( input & "<br />" );
    // Output the serialized value produced by serializeJson().
    // CAUTION: The "u+" string will be accidentally replaced with "\u".
    writeOutput( serializeJson( input ) );
</cfscript>

REFERENCE