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 = 참
개수 = 0
서브 끝
비공개 하위 클래스_종료
컬렉션 설정 = 없음
서브 끝
' 카운터
사유 재산 받기 카운터
카운터=개수
개수 = 개수 + 1
끝 속성
'객체 유형 설정
공용 속성 Let SetKind(ByVal fpKind)
케이스 선택 L케이스(fpKind)
케이스 객체:종류=0
케이스 배열:종류=1
선택 종료
끝 속성
'-데이터 조작
' -- 쌍
공공 재산 하자 쌍(p, v)
IsNull(p)이면 p = 카운터
컬렉션(p) = v
끝 속성
공용 속성 집합 쌍(p, v)
IsNull(p)이면 p = 카운터
TypeName(v) <> Json_Cls 그러면
Err.Raise &hD, 클래스: 클래스, 클래스 개체: ' & TypeName(v) & '
종료 조건
집합 컬렉션(p) = v
끝 속성
공개 기본 속성 가져오기 쌍(p)
IsNull(p)이면 p = Count - 1
IsObject(Collection(p)) 그렇다면
세트 쌍 = 컬렉션(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)
i = 1의 경우 Len(str)
p=참
c = 중간(str, i, 1)
j = 0 ~ 7의 경우
c = Chr(aL1(j))이면
jsEncode = jsEncode & / & Chr(aL2(j))
p = 거짓
종료 대상
종료 조건
다음
만일 p 그렇다면
어둡게
a = 오름차순(c)
a > 31이고 a < 127이면
jsEncode = jsEncode & c
ElseIf a > -1 또는 a < 65535 그러면
jsEncode = jsEncode & /u & String(4 - Len(Hex(a)), 0) & Hex(a)
종료 조건
종료 조건
다음
기능 종료
' 변환 중
공개 함수 toJSON(vPair)
케이스 VarType(vPair) 선택
사례 1' 널
toJSON = null
사례 7 '날짜
'yaz saati 문제가 var
' jsValue = new Date( & Round((vVal - #01/01/1970 02:00#) * 86400000) & )
toJSON = & CStr(vPair) &
케이스 8' 스트링
toJSON = & jsEncode(vPair) &
사례 9 '객체
희미한 bFI,i
bFI=참
vPair.Kind인 경우 toJSON = toJSON & [ Else toJSON = toJSON & {
vPair.Collection의 각 i에 대해
bFI이면 bFI = False, 그렇지 않으면 toJSON = toJSON &,
vPair.Kind인 경우
toJSON = toJSON & toJSON(vPair(i))
또 다른
QuotedVars이면
toJSON = toJSON & & i & : & toJSON(vPair(i))
또 다른
toJSON = toJSON & i & : & toJSON(vPair(i))
종료 조건
종료 조건
다음
vPair.Kind이면 toJSON = toJSON & ] 그렇지 않으면 toJSON = toJSON & }
사례 11
vPair인 경우 toJSON = true, 그렇지 않은 경우 toJSON = false
사례 12, 8192, 8204
희미한 sEB
toJSON = MultiArray(vPair, 1, , sEB)
그렇지 않은 경우
toJSON = 바꾸기(vPair, ,, .)
선택 종료
기능 종료
공용 함수 MultiArray(aBD, iBC, sPS, ByRef sPT) ' Array BoDy, Integer BaseCount, String PoSition
Dim iDU, iDL, i ' 정수 DimensionUBound, 정수 DimensionLBound
오류 발생 시 다음 재개
iDL = LBound(aBD, iBC)
iDU = UBound(aBD, iBC)
Dim sPB1, sPB2 ' 문자열 PointBuffer1, 문자열 PointBuffer2
Err = 9이면
sPB1 = sPT 및 sPS
i = 1부터 Len(sPB1)까지
i <> 1이면 sPB2 = sPB2 & ,
sPB2 = sPB2 & 중간(sPB1, i, 1)
다음
MultiArray = MultiArray & toJSON(Eval(aBD( & sPB2 & )))
또 다른
sPT = sPT & sPS
MultiArray = 다중 배열 & [
i의 경우 = iDL에서 iDU로
MultiArray = MultiArray & MultiArray(aBD, iBC + 1, i, sPT)
i < iDU이면 MultiArray = MultiArray & ,
다음
MultiArray = 다중 배열 & ]
sPT = 왼쪽(sPT, iBC - 2)
종료 조건
기능 종료
공용 속성 GetToString
ToString = toJSON(나)
끝 속성
공개 서브 플러시
TypeName(응답) <> 비어 있는 경우
응답.쓰기(ToString)
ElseIf WScript <> 비어 있는 경우
WScript.Echo(ToString)
종료 조건
서브 끝
공개 기능 클론
클론 설정 = ColClone(Me)
기능 종료
비공개 기능 ColClone(core)
희미한 jsc,i
jsc = New Json_Cls 설정
jsc.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 = New Json_Cls 설정
jsa.SetKind=배열
그렇지 않은 동안(rs.EOF 또는 rs.BOF)
jsa(Null) = 새 Json_Cls 설정
jsa(Null).SetKind=개체
rs.Fields의 각 열에 대해
jsa(Null)(col.Name) = col.Value
다음
rs.이동다음
향하게 하다
QueryToJSON = jsa로 설정
기능 종료
수업 종료
%>