今、ちょっとtoJSONを触っていたら、配列の2番目の要素が、配列だった場合、この時返すJSONが、
var data = {
・・・
,"1":[{"2_1":"Hoge1","2_2":"Hoge2","2_3":"Hoge3"}]
・・・
}
と配列の指数に対してネストされている配列の数字がそろっていなかったので、修正を加えました。
バージョンをどうしようかと悩んだのですが、とりあえず、ver1.25.2としてver1.25を削除して、アップロードしました。
2008/01/31
toJSONにパッチを当てました。
2008/01/30
toJSONファンクションをバージョンアップ
toJSONファンクションをバージョンアップしました。
今までは、
Array[1] = "Apple"
Array[2] = "Lemon"
Array[3] = "Orange"
と配列の値が、文字列か数値しかJSON変換できなかったのですが、今回、1次元の配列の場合も変換できるようにしました。
例えば、
Array[1] = "Food"
Array[2] = Hoge["Apple","Lemon","Orange"]
Array[3] = "Banana"
という場合の配列があったならば、今回のプログラムの変更により、
var data = {
"0":"Food"
,"1":[{"1_1":"Apple","1_2":"Lemon","1_3":"Orange"}]
,"2":"Banana"
}
と変換できるようになりました。
ソースは次のような形で作りました。
< 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)#"> <CFIF i NEQ 1>,</CFIF>"#ind#": <!--- Is Array ---> <CFIF IsArray(aArray[#i#])> [{ <CFLOOP index="k" from="1" to="#Evaluate("ArrayLen(aArray[#i#])")#"> <CFSET tmp = Evaluate("aArray[#i#][#k#]")> <CFIF k NEQ 1>,</CFIF>"#i#_#k#":"#IIF(tmp NEQ "" , DE("#tmp#"), DE("null"))#" </CFLOOP> }] <!--- Not Array ---> <CFELSE> <CFSET tmp = Evaluate("aArray[#i#]")> "#IIF(tmp NEQ "" , DE("#tmp#"), DE("null"))#" </CFIF> <CFSET ind = ind + 1> </CFLOOP> }; <!--- if aScr is true , make SCRIPT tag ---> <CFIF aScr EQ true> <!--- make SCRIPT tag ---> </SCRIPT> </CFIF> </CFOUTPUT> </CFFUNCTION> |
このファンクションを通して、配列の値が、1次元配列でも、JSON変換できるようになりました。
さっそく、前回のプログラムをtoJSON_1.0.cfm、今回のファンクションをtoJSON_1.25としてアップロードしました。
2008/01/29
ColdFusion-addonグループを作成しました。
Google Groupsに、coldfusion-addonグループを作成しました。初のProjectHostingができたので、あまりのうれしさに、今日、先輩社員にProjectHostingについて紹介したら、「日本語の説明とかはないのー??」と逆に聞き返されてしまい、日本語でもディスカッションができるように今回、グループも作成しました。
これで、ディスカッションの環境は、バッチリ!!後は、ProjectHomeにしろ、Groupsにしろ、コンテンツをもっと充実させなければ、、、
やることがたくさんあって充実しています^-^v
2008/01/28
GoogleCodeにProjectHostingしました
昨日、ColdFusion変数からJSONを作成toJSONファンクションで紹介しましたが、配列からJSONに変換するtoJSONファンクションをGoogleCodeに公開しました。
その名も、coldfusion-addonです。
このproject hostingは、主に、coldfusionで作ったアドオンやアプリケーションファイルを紹介して、また、それに関するバージョンアップ、バグ、ディスカッションとかできたらなーと思い作りました。
まだ、全然、コンテンツが少なくて、ファイルをダウンロードするぐらいしかないのですが、ドキュメントを作ったり、wikiのテーマを作ったり、どんどん充実させていきたいなーと思います。
どんどん、コンテンツを充実させていくぞーーー
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から取りにいけるようになります。
このソースを使ってホスティングするぞー。
2008/01/26
2008/01/25
[miniGoogle]amazon search追加
昨日、紹介したminiGoogleですが、新たにアマゾン検索を追加しました。
検索ボックスに調べたい内容を入力し、アイコンをクリックすれば、そのままアマゾンのサイトの検索結果にたどりつきます。
毎回、毎回、アマゾンを開く必要がなくなるので、便利になるかなと。
2008/01/24
[miniGoogle]リリース
IEを使っていてすごぶる不便利なのが、iGoogleから検索した後、検索したページが遷移してしまうこと、別ウィンドウでできないのかなーっと悩んでいたら、自作した方がはやいと思い、おもいっきって作ってみることに。
その名も、miniGoogle
GUIが普通のgoogleと同じで画面が小さいことから名付けました。
これは、googleが公式にリリースしているソースをまんまつかっているので、違法性はありませんので、そこら辺は大丈夫です。
いつものgoogleと同じように検索を行うと、別ウィンドウで検索結果が表示されます。
で、結果上にある検索ボックスから再度、検索をかけると同じウィンドウが遷移する仕様となっています。
IEしか使えない職場などに、ものすごく威力を発揮すると思います。
是非、お試しあれ!!
2008/01/23
[delicious]ガジェット作成
ソーシャルブクマのdeliciousのリンクがgoogle gadgetでも参照できるようにガジェットを作りました。
popular
recent
hot list
をサポートしています。
それぞれ上のタブをクリックするとリンクが表示されます。
さらに、自分のブクマが表示できるようにしました。
表示件数も1〜100件表示できるようにしてあります。
是非、是非、お使いくださいな♪