レガシーASPで毎度JSON出力する関数書くのだるい→ライブラリあったやったぜ。
http://www.aspjson.com/
簡単にメモ。随時追記予定。
###パブリックな変数
変数 | 用途 |
---|---|
data | Dictionaryオブジェクトで初期化されたPublic変数。JSONデータの格納に使う |
###パブリックな関数
メソッド名 | 種類 | 引数 | 返り値 | 使途 |
---|---|---|---|---|
loadJSON | Sub | JSON文字列(inputsource) | なし | JSONデシリアライズ |
JSONoutput | Function | なし | JSONオブジェクト文字列 | JSONシリアライズ |
Collection | Function | なし | 初期化されたDictionaryオブジェクト | dataに値を追加するときに利用。記述量が減らせるだけ。 |
AddToCollection | Function | Dictionaryオブジェクト(dictobj) | dictobj.countキーを追加したdictobj(dictobj.count) | よくわからない |
###仕様
- 全てのデータはDictionaryオブジェクトで管理される
- dataをrootとして、Dictionaryオブジェクトを追加していく形で入れ子を表現する
- Dictionaryオブジェクトのキーに文字列がある場合、そのDictionaryオブジェクトはJavaScriptオブジェクトとして出力
- Dictionaryオブジェクトのキーが全て整数の場合、そのDictionaryオブジェクトはJavaScript配列として出力
- 全ての出力されるJSONデータの出力順は、Dictionaryオブジェクトへのデータの挿入順となる。配列出力であってもキーの整数値順とはならない
###疑問
AddToCollectionの使い道。
引数の元オブジェクトも変更されるし謎。
###追記
AddToCollectionについて
####コード
Dim a
Set a = New aspJSON
a.AddToCollection(a.data)
a.data(a.data.count-1) = "hoge"
Response.Write a.JSONoutput()
####出力
[ "hoge" ]
こんな感じで配列のPushみたいなノリで使えばいいのかな。
どうせなら挿入する値も引数にセットできればいいのに感はある。
あとキーの取り方が(ディクショナリー).count-1するしかなさそうなのもうーん。