ASP JSON クラスのソース コードを共有し、必要な友人がそれを参照できるようにします。次のようにコードをコピーします。
<%
'================================================ = ===========
'ファイル名: /Cls_Json.asp
'ファイルの役割: システム JSON クラス ファイル
' ファイルバージョン: VBS JSON(JavaScript Object Notation) バージョン 2.0.2
'プログラム修正:Cloud.L
' 最終更新日: 2009-05-12
'================================================ = ===========
'プログラムコア: JSON公式 http://www.json.org/
著者のブログ: http://www.cnode.cn
'================================================ = ===========
クラスJson_Cls
パブリックコレクション
公開カウント
Public QuotedVars '変数に引用符を追加するかどうか
パブリック種類 ' 0 = オブジェクト、1 = 配列
プライベートサブクラス_初期化
コレクション = Server.CreateObject(GP_ScriptingDictionary) を設定します
QuotedVars = True
カウント = 0
エンドサブ
プライベートサブクラス_Terminate
セットコレクション = なし
エンドサブ
' カウンター
私有財産取得カウンター
カウンタ=カウント
カウント = カウント + 1
終了プロパティ
'オブジェクトタイプを設定します
Public プロパティ Let SetKind(ByVal fpKind)
ケースの選択 LCase(fpKind)
ケースオブジェクト:種類=0
ケース配列:種類=1
エンドセレクト
終了プロパティ
'-データの不正
' -- ペア
Public プロパティ Letpai(p, v)
IsNull(p) の場合、p = カウンタ
コレクション(p) = v
終了プロパティ
パブリック プロパティ セット ペア(p, v)
IsNull(p) の場合、p = カウンタ
If TypeName(v) <> Json_Cls then
Err.Raise &hD、クラス: クラス、クラス オブジェクト: ' & TypeName(v) & '
終了の場合
コレクション(p) = v を設定します
終了プロパティ
パブリックデフォルトプロパティのペアの取得(p)
IsNull(p) の場合、p = カウント - 1
If IsObject(Collection(p)) then
ペアを設定 = コレクション(p)
それ以外
ペア = コレクション(p)
終了の場合
終了プロパティ
' -- ペア
パブリックサブクリーン
コレクション.すべて削除
エンドサブ
パブリックサブ削除(vProp)
コレクション.vProp の削除
エンドサブ
'データの不正
'エンコーディング
パブリック関数 jsEncode(str)
Dim i、j、aL1、aL2、c、p
aL1 = 配列(&h22、&h5C、&h2F、&h08、&h0C、&h0A、&h0D、&h09)
aL2 = 配列(&h22、&h5C、&h2F、&h62、&h66、&h6E、&h72、&h74)
For i = 1 To Len(str)
p=真
c = Mid(str, i, 1)
j = 0 ~ 7 の場合
c = Chr(aL1(j)) の場合
jsEncode = jsEncode & / & Chr(aL2(j))
p = 偽
出口
終了の場合
次
もし p なら
ディム a
a = AscW(c)
a > 31かつa < 127の場合
jsEncode = jsEncode & c
ElseIf a > -1 または a < 65535 then
jsEncode = jsEncode & /u & String(4 - Len(Hex(a)), 0) & Hex(a)
終了の場合
終了の場合
次
終了機能
'変換中
パブリック関数 toJSON(vPair)
Case VarType(vPair) を選択してください
ケース 1' ヌル
toJSON = null
ケース7「日付」
「ヤズ・サアティ・プロブレムティ・ヴァール」
' jsValue = 新しい日付( & Round((vVal - #01/01/1970 02:00#) * 86400000) & )
toJSON = & CStr(vPair) &
ケース 8' ストリング
toJSON = & jsEncode(vPair) &
ケース9「オブジェクト」
薄暗い bFI,i
bFI=真
If vPair.Kind then toJSON = toJSON & [ Else toJSON = toJSON & {
vPair.Collection の各 i について
bFI の場合 bFI = False それ以外の場合 toJSON = toJSON & 、
vPair.Kind の場合
toJSON = toJSON & toJSON(vPair(i))
それ以外
引用符付き変数の場合
toJSON = toJSON & & i & : & toJSON(vPair(i))
それ以外
toJSON = toJSON & i & : & toJSON(vPair(i))
終了の場合
終了の場合
次
vPair.Kind の場合 toJSON = toJSON & ] Else toJSON = toJSON & }
事例11
vPair の場合 toJSON = true、そうでない場合 toJSON = false
ケース12、8192、8204
ディム sEB
toJSON = MultiArray(vPair, 1, , sEB)
それ以外の場合
toJSON = Replace(vPair, ,, .)
エンドセレクト
終了機能
Public Function MultiArray(aBD, iBC, sPS, ByRef sPT) ' 配列 BoDy、整数 BaseCount、文字列位置
Dim iDU、iDL、i ' 整数 DimensionUBound、整数 DimensionLBound
エラー時は次へ再開
iDL = LBound(aBD, iBC)
iDU = UBound(aBD, iBC)
Dim sPB1、sPB2 ' 文字列 PointBuffer1、文字列 PointBuffer2
Err = 9 の場合
sPB1 = sPT および sPS
For i = 1 To Len(sPB1)
i <> 1 の場合、sPB2 = sPB2 & 、
sPB2 = sPB2 & Mid(sPB1, i, 1)
次
MultiArray = MultiArray & toJSON(Eval(aBD( & sPB2 & )))
それ以外
spt = spt & sps
マルチ配列 = マルチ配列 & [
iの場合 = iDLからiDUへ
マルチアレイ = マルチアレイ & マルチアレイ(aBD、iBC + 1、i、sPT)
i < iDU の場合、MultiArray = MultiArray & 、
次
マルチ配列 = マルチ配列 & ]
sPT = 左(sPT, iBC - 2)
終了の場合
終了機能
Public プロパティ GetToString
ToString = toJSON(私)
終了プロパティ
パブリックサブフラッシュ
TypeName(Response) <> 空の場合
Response.Write(ToString)
ElseIf WScript <> 空の場合
WScript.Echo(ToString)
終了の場合
エンドサブ
パブリック機能クローン
クローン = ColClone(Me) を設定します。
終了機能
プライベート関数 ColClone(コア)
薄暗いjsc、私
jsc = 新しい Json_Cls を設定します
jsc.Kind = core.Kind
core.Collection の各 i について
IsObject(core(i)) の場合
jsc(i) = ColClone(core(i)) を設定します。
それ以外
jsc(i) = コア(i)
終了の場合
次
ColClone = jsc を設定します
終了機能
パブリック関数 QueryToJSON(dbc, sql)
暗い rs、jsa、col
rs = dbc.Execute(sql) を設定します。
jsa = 新しい Json_Cls を設定します
jsa.SetKind=配列
そうでない間 (rs.EOF または rs.BOF)
jsa(Null) = 新しい Json_Cls を設定します。
jsa(Null).SetKind=オブジェクト
rs.Fields の各列について
jsa(Null)(列名) = 列値
次
rs.次へ移動
ウェン
QueryToJSON = jsa を設定します。
終了機能
終了クラス
%>