Classic ASP에서 JSON을 해석하기 위한 좋은 라이브러리가 있습니까?
Classic ASP(VBScript)에서 JSON을 생성하기 위한 수많은 라이브러리를 찾을 수 있었지만 구문 분석용 라이브러리는 찾을 수 없었습니다.
JSON 문자열을 전달하고 일종의 VBScript 객체(Array, Scripting)를 얻을 수 있는 것을 원합니다.사전 등)
Classic ASP에서 JSON을 해석하기 위해 라이브러리를 추천할 수 있습니까?
Classic ASP에는 VBScript뿐만 아니라 JScript도 포함되어 있습니다.흥미롭게도 JScript를 사용하여 JSON을 해석하고 결과 개체를 VBScript에서 직접 사용할 수 있습니다.
따라서 서버측 코드에서 표준 https://github.com/douglascrockford/JSON-js/blob/master/json2.js 를 0 으로 변경할 수 있습니다.
물론 JSON에 어레이가 포함되어 있는 경우 해석 완료 시 이들 어레이는 JScript 어레이로 유지됩니다.점 표기법을 사용하여 VBScript에서 JScript 배열의 내용에 액세스할 수 있습니다.
<%@Language="VBScript" %>
<%
Option Explicit
%>
<script language="JScript" runat="server" src='path/to/json2.js'></script>
<%
Dim myJSON
myJSON = Request.Form("myJSON") // "[ 1, 2, 3 ]"
Set myJSON = JSON.parse(myJSON) // [1,2,3]
Response.Write(myJSON) // 1,2,3
Response.Write(myJSON.[0]) // 1
Response.Write(myJSON.[1]) // 2
Response.Write(myJSON.[2]) // 3
%>
그건 잘 모르겠어요.JSON을 지원하는 ASP Extreme Framework 확인하셨나요?
크리스 니엘슨이 제안한 극단적인 진화나 일을 할 수 없었다.하지만 다음 사항이 효과가 있었습니다.
http://tforster.wik.is/ASP_Classic_Practices_For_The_21st_Century/JSON4ASP
다음을 "json2.min.asp"로 다운로드합니다.
http://tforster.wik.is/@api/deki/files/2/=json2.min.asp
ASP 파일 상단에 다음 행을 추가합니다.
<script language="javascript" runat="server" src="json2.min.asp"></script>
그런 다음 ASP에서 JSON을 사용할 수 있습니다.
Dim car: Set car = JSON.parse("{""brand"":""subaru"",""model"":""outback sport"",""year"":2003," & _
"""colour"":""green"",""accessories"":[" & _
"{""foglamps"":true},{""abs"":true},{""heatedSeats"":true}]}")
Response.Write("brand: " & car.brand & "<br/>")
Response.Write("model: " & car.model & "<br/>")
Response.Write("colour: " & car.colour & "<br/>")
Response.Write("has foglamps: " & CStr(car.accessories.get(0).foglamps) & "<br/>")
car.accessories.get(0).foglamps = false
Response.Write("has foglamps: " & CStr(car.accessories.get(0).foglamps) & "<br/>")
Response.Write("new Json: " & JSON.stringify(car) & "<br/>")
Set car = Nothing
주의: 항목 배열을 해석하려면 다음을 수행해야 합니다.
for each iTmp in testing
if (TypeName(iTmp))<>"JScriptTypeInfo" then
Response.Write("Item: " & iTmp & "<br/>")
end if
next
최근에 VbsJson 클래스를 구현했습니다.VBScript에는 JSON을 해석하는 "Decode" 메서드와 VBScript에서 JSON을 생성하는 "Encode" 메서드가 있습니다.코드가 좀 길어서 여기에 붙이지 않아요.
이 답변은 경량 순수 VBScript 전용 솔루션을 찾고 있을 때 작성했습니다.
기본적인 JSON-XML 변환기를 조합하면 JSON 문자열을 Microsoft로 전환할 수 있습니다.XMLDOM 문서
거기서 XPath 쿼리를 포함한 Microsoft의 XML API를 사용하여 원하는 값을 추출합니다.
이것은 간단한 JSON에 대응하고 있습니다만, 이 답변은 더 복잡한 것을 의도한 것은 아닙니다.
보다 강력한 솔루션을 위해 최고의 JSON 인터프리터는 적절한 Javascript 엔진입니다.따라서 나는 이 질문에 대해 받아들여진 답변을 강력히 추천한다.Classic ASP에서 JSON을 해석하기 위한 좋은 라이브러리가 있습니까?
Function JSONtoXML(jsonText)
Dim idx, max, ch, mode, xmldom, xmlelem, xmlchild, name, value
Set xmldom = CreateObject("Microsoft.XMLDOM")
xmldom.loadXML "<xml/>"
Set xmlelem = xmldom.documentElement
max = Len(jsonText)
mode = 0
name = ""
value = ""
While idx < max
idx = idx + 1
ch = Mid(jsonText, idx, 1)
Select Case mode
Case 0 ' Wait for Tag Root
Select Case ch
Case "{"
mode = 1
End Select
Case 1 ' Wait for Attribute/Tag Name
Select Case ch
Case """"
name = ""
mode = 2
Case "{"
Set xmlchild = xmldom.createElement("tag")
xmlelem.appendChild xmlchild
xmlelem.appendchild xmldom.createTextNode(vbCrLf)
xmlelem.insertBefore xmldom.createTextNode(vbCrLf), xmlchild
Set xmlelem = xmlchild
Case "["
Set xmlchild = xmldom.createElement("tag")
xmlelem.appendChild xmlchild
xmlelem.appendchild xmldom.createTextNode(vbCrLf)
xmlelem.insertBefore xmldom.createTextNode(vbCrLf), xmlchild
Set xmlelem = xmlchild
Case "}"
Set xmlelem = xmlelem.parentNode
Case "]"
Set xmlelem = xmlelem.parentNode
End Select
Case 2 ' Get Attribute/Tag Name
Select Case ch
Case """"
mode = 3
Case Else
name = name + ch
End Select
Case 3 ' Wait for colon
Select Case ch
Case ":"
mode = 4
End Select
Case 4 ' Wait for Attribute value or Tag contents
Select Case ch
Case "["
Set xmlchild = xmldom.createElement(name)
xmlelem.appendChild xmlchild
xmlelem.appendchild xmldom.createTextNode(vbCrLf)
xmlelem.insertBefore xmldom.createTextNode(vbCrLf), xmlchild
Set xmlelem = xmlchild
name = ""
mode = 1
Case "{"
Set xmlchild = xmldom.createElement(name)
xmlelem.appendChild xmlchild
xmlelem.appendchild xmldom.createTextNode(vbCrLf)
xmlelem.insertBefore xmldom.createTextNode(vbCrLf), xmlchild
Set xmlelem = xmlchild
name = ""
mode = 1
Case """"
value = ""
mode = 5
Case " "
Case Chr(9)
Case Chr(10)
Case Chr(13)
Case Else
value = ch
mode = 7
End Select
Case 5
Select Case ch
Case """"
xmlelem.setAttribute name, value
mode = 1
Case "\"
mode = 6
Case Else
value = value + ch
End Select
Case 6
value = value + ch
mode = 5
Case 7
If Instr("}], " & Chr(9) & vbCr & vbLf, ch) = 0 Then
value = value + ch
Else
xmlelem.setAttribute name, value
mode = 1
Select Case ch
Case "}"
Set xmlelem = xmlelem.parentNode
Case "]"
Set xmlelem = xmlelem.parentNode
End Select
End If
End Select
Wend
Set JSONtoXML = xmlDom
End Function
위의 스크립트는 다음 JSON을 변환합니다.
{
"owningSystemUrl": "http://www.arcgis.com",
"authInfo": {
"tokenServicesUrl": "https://www.arcgis.com/sharing/rest/generateToken",
"isTokenBasedSecurity": true
}
}
다음과 같이 입력합니다.
<xml owningSystemUrl="http://www.arcgis.com">
<authInfo
tokenServicesUrl="https://www.arcgis.com/sharing/rest/generateToken"
isTokenBasedSecurity="true" >
</authInfo>
</xml>
하여 XPath를 할 수 .tokenServicesUrl
예를 들어 다음과 같습니다.
dom.SelectSingleNode("xml/authInfo").getAttribute("tokenServicesUrl")
' Returns: "https://www.arcgis.com/sharing/rest/generateToken"
http://github.com/nagaozen/asp-xtreme-evolution/
AXE는 훌륭한 라이브러리이지만 JSON 처리 기능만 필요한 경우에는 상당히 무겁습니다.
단, AXE 프로젝트에서 base.asp 파일과 json.asp 클래스 파일을 가져와 JSON 파싱 구현에 성공했습니다.
JSON 세대에서는 aspjson이 통합하기가 더 쉬웠습니다.또한 Json 관련 기능이 더욱 강력합니다.Axe 문서는 약간 부족했고 프로젝트에 통합하기 위한 작업이 더 많았지만 JSON VB 개체를 문자열로 다시 직렬화하는 작업은 잘 수행되었습니다.
여기의 솔루션은 매우 좋지만 때로는 과잉 살상하기도 합니다.JSON이 단순하고 항상 동일한 구조를 가지고 있으면 직접 해석할 수 있으므로 빠르고 간단합니다.
'read data from client
records = Request.Form("records")
'convert the JSON string to an array
Set oRegExpre = new RegExp
oRegExpre.Global = true
oRegExpre.Pattern = "[\[\]\{\}""]+"
records = replace(records, "},{","||")
records = oRegExpre.Replace(records, "" )
aRecords = split(records,"||")
'iterate the array and do some cleanup
for each rec in aRecords
aRecord = split(rec,",")
id = split(aRecord(1),":")(1)
field = split(aRecord(0),":")(0)
updateValue = split(aRecord(0),":")(1)
updateValue = replace(updateValue,chr(10),"\n")
updateValue = replace(updateValue,chr(13),"\r")
updateValue = replace(updateValue,"'","''")
'etc
next
언급URL : https://stackoverflow.com/questions/1019223/any-good-libraries-for-parsing-json-in-classic-asp
'programing' 카테고리의 다른 글
jQuery Uniform 체크박스가 켜지지 않음(오프) (0) | 2023.03.16 |
---|---|
'목록' 유형은 '목록' 유형의 하위 유형이 아닙니다. (0) | 2023.03.16 |
$resource($resource)쿼리 문자열 대신 분할 문자열(문자 배열) 반환 (0) | 2023.03.16 |
angular: 모델의 부울 값을 기반으로 버튼 텍스트를 전환합니다. (0) | 2023.03.16 |
React Faux DOM을 사용하여 D3 그룹화된 막대 차트에서 직사각형을 렌더링하려면 어떻게 해야 합니까? (0) | 2023.03.16 |