2008/01/27

ColdFusion変数からJSONを作成toJSONファンクション

NakajimaさんのLife is beautifulのiAnime.js のドキュメントがようやく完成というエントリーを読んで、GoogleCodeにOpenSourceを公開することができるんだーということを知りました。

で、GoogleCodeに何か、ホスティングしたいなぁーと思ったのですが、どんなソースを作っていいのかわからず公開しようか悩んでしまいました。

悩んでいても始まらないので、「こんなファンクションがあったら便利だろうなー」と視点を変えて考えてみたら、Cfの変数からJSONを作成するファンクションがほしいなーと思い、toJSONファンクションというのを作ってみました。

ソースはこのような感じです。

<CFFUNCTION name="toJSON">

<!--- declare arguments --->
<CFARGUMENT name="aArray" type="array" REQUIRED="yes">
<CFARGUMENT name="aScr" type="boolean" REQUIRED="no" default=true>
<CFARGUMENT name="aInd" type="numeric" REQUIRED="no" default=0>
<CFARGUMENT name="aName" type="string" REQUIRED="no" default="data">

<!--- declare variables --->
<CFSCRIPT>
var i = "";
var tmp = "";
var ind = "";
</CFSCRIPT>

<CFOUTPUT>
<!--- if aScr is true , make SCRIPT tag --->
<CFIF aScr EQ true>

<!--- make SCRIPT tag --->
<SCRIPT type="text/javascript">

</CFIF>
<CFSET ind = aInd>

<!--- output JSON --->
var #aName# = {

<!--- loop From 1 TO aArray'slength --->
<CFLOOP index="i" from="1" to="#ArrayLen(aArray)#">

<CFSET tmp = Evaluate("aArray[#i#]")>
<CFIF i NEQ 1>,</CFIF>#ind#:#IIF(tmp NEQ "" , DE("#tmp#"), DE("null"))#
<CFSET ind = ind + 1>

</CFLOOP>

};

<!--- if aScr is true , make SCRIPT tag --->
<CFIF aScr EQ true>

<!--- make SCRIPT tag --->
</SCRIPT>

</CFIF>
</CFOUTPUT>

</CFFUNCTION>


例えば、以下のようなCFの配列があったとします。
Array[1] = "hoge"
Array[2] = "test"
Array[3] = "sample"
このファンクションを通して、上の配列が下のようなJSONを生成します。
var data = {0:"hoge",1:"test",2:"sample"};

このように、JSONに変換することで、サーバサイドのデータをsubmitせずにJavascriptから取りにいけるようになります。

このソースを使ってホスティングするぞー。

0 コメント:

コメントを投稿