经典ASP中parsingJSON的任何好的库?

我已经能够find一个用于在传统的ASP(VBScript)中生成 JSON的zillion库,但我还没有find任何parsing

我想要的东西,我可以传递一个JSONstring,并得到某种types的VBScript对象(数组,Scripting.Dictionary等)

任何人都可以推荐一个库在经典的ASPparsingJSON?

请记住,经典的ASP包括JScript以及VBScript。 有趣的是,您可以使用JScript来parsingJSON,并直接在VBScript中使用生成的对象。

因此,可以在服务器端代码中使用规范化的https://github.com/douglascrockford/JSON-js/blob/master/json2.js ,并进行零修改。

当然,如果你的JSON包含任何数组,这些将在parsing完成时保留为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 %> 

不确定。 你有检查ASP的极端框架,有JSON支持?

我无法得到极端的进化或克里斯·尼尔森的build议。 但是,以下对我有用:

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 

注意:要parsing项目数组,您需要执行以下操作:

  for each iTmp in testing if (TypeName(iTmp))<>"JScriptTypeInfo" then Response.Write("Item: " & iTmp & "<br/>") end if next 

我最近实现了一个VbsJson类,它具有parsingJSON到VBScript的“ Decode ”方法和一个从VBScript生成JSON的“ Encode ”方法。 代码有点长,所以我不把它粘贴在这里。

我有一个JSONtoXML VBScript函数,它接受一个JSONstring并返回一个Microsoft.XMLDOM:

 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(UCase(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(UCase(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 

AX是一个伟大的库,但是如果你只是需要JSON处理function,那么它相当沉重。

但是,我从AX项目中获取了base.asp文件和json.asp类文件,并成功地使用它们在我的项目中实现了JSONparsing。

对于JSON一代,我发现aspjson更容易集成。 它还具有更强大的与json相关的function。 斧头文件有点缺乏,是更多的工作,以整合到项目中,但它做了很好的序列化其JSON VB对象回到一个string。

这里的解决scheme非常好,但有时矫枉过正。 如果JSON很简单,并且总是可以自己parsing它的结构,那么它就是快速而简单的。

  '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