我有一个ERP系统的快速开发工具,它只允许vbscript。我试图用VBS创建一个简单的AJAX请求。这与“Microsoft.XMLHTTP” - 对象一起工作。用VBScript解码/编码JSON
下一步是使用json从网络服务器接收数据。但在VBS中似乎没有像“json_decode”或其他功能。
有谁知道解决方案吗?或者是开发我自己的json函数的唯一选择?
我有一个ERP系统的快速开发工具,它只允许vbscript。我试图用VBS创建一个简单的AJAX请求。这与“Microsoft.XMLHTTP” - 对象一起工作。用VBScript解码/编码JSON
下一步是使用json从网络服务器接收数据。但在VBS中似乎没有像“json_decode”或其他功能。
有谁知道解决方案吗?或者是开发我自己的json函数的唯一选择?
由于JSON是一种分层数据格式,正如Peter提出的那样,使用正则表达式和Split()不会让你走得太远。
如果您的环境允许CreateObject()
您可能可以使用以其他语言编写的现成的组件(例如,在.WSC中包装标准json2.js或在.NET中启用.NET DLL)。另一种选择是通过Microsoft Script Control利用另一种语言。这种方法的意义在于,你必须处理由另一种语言交付的对象/数组(有些提示可以在Peter所说的主题中找到)。
可以找到一个纯VBScript解决方案here。我无法阅读文档,但代码编译并适用于简单测试用例 - YMMV。
从demon.tw解决方案的伟大工程,但表现非常缓慢。我有一个10-15个简单值的简单“数组”。一个数组包含一个产品的信息。我有3500个产品,所以我必须运行JSON编码3500倍。 对于这项任务它需要2-3分钟。如果没有JSON编码,它运行得很快,但我需要这个JSON格式。有没有可能加速它? 30秒是可以接受的。 –
我已经通过手动构建JSON语法解决了这个问题。我刚刚加入了字符串并用JSON-Syntax包装了它们,并且逃脱了一些特殊的字符。所以表现很棒 - 并且适用于我的情况。 –
_e.g。将标准json2.js包装在.WSC或COM中启用a。NET DLL_你可以请我指向网站或任何文档如何做到这一点? – Gurman
你应该更好地推出自己的基于json和asp的查询。像这样一个Any good libraries for parsing JSON in Classic ASP? 大部分时间json2库被使用,但这是基于jscript所以没有选择。 也大多数时候这种JSON有一个固定的结构,所以它不应该像我在上面的几个答案中显示的Regularexpression解析那么困难。 您可以发布一些JSON,以便我们可以使用一些例程对其进行测试。
我有一个类似的问题,所以我在VBScript中为我的一个项目写了一个JSONtoXML函数。这个脚本没有保证(它的原样提供,并已知的限制,如不能处理所有类型的转义序列):
Const stateRoot = 0
Const stateNameQuoted = 1
Const stateNameFinished = 2
Const stateValue = 3
Const stateValueQuoted = 4
Const stateValueQuotedEscaped = 5
Const stateValueUnquoted = 6
Const stateValueUnquotedEscaped = 7
Function JSONToXML(json)
Dim dom, xmlElem, i, ch, state, name, value
Set dom = CreateObject("Microsoft.XMLDOM")
state = stateRoot
For i = 1 to Len(json)
ch = Mid(json, i, 1)
Select Case state
Case stateRoot
Select Case ch
Case "["
If dom.documentElement is Nothing Then
Set xmlElem = dom.CreateElement("ARRAY")
Set dom.documentElement = xmlElem
Else
Set xmlElem = XMLCreateChild(xmlElem, "ARRAY")
End If
Case "{"
If dom.documentElement is Nothing Then
Set xmlElem = dom.CreateElement("OBJECT")
Set dom.documentElement = xmlElem
Else
Set xmlElem = XMLCreateChild(xmlElem, "OBJECT")
End If
Case """"
state = stateNameQuoted
name = ""
Case "}"
Set xmlElem = xmlElem.parentNode
Case "]"
Set xmlElem = xmlElem.parentNode
End Select
Case stateNameQuoted
Select Case ch
Case """"
state = stateNameFinished
Case Else
name = name + ch
End Select
Case stateNameFinished
Select Case ch
Case ":"
value = ""
State = stateValue
End Select
Case stateValue
Select Case ch
Case """"
State = stateValueQuoted
Case "{"
Set xmlElem = XMLCreateChild(xmlElem, "OBJECT")
State = stateRoot
Case "["
Set xmlElem = XMLCreateChild(xmlElem, "ARRAY")
State = stateRoot
Case " "
Case Chr(9)
Case vbCr
Case vbLF
Case Else
value = ch
State = stateValueUnquoted
End Select
Case stateValueQuoted
Select Case ch
Case """"
xmlElem.setAttribute name, value
state = stateRoot
Case "\"
state = stateValueQuotedEscaped
Case Else
value = value + ch
End Select
Case stateValueQuotedEscaped ' @@TODO: Handle escape sequences
value = value + ch
state = stateValueQuoted
Case stateValueUnquoted
Select Case ch
Case "}"
xmlElem.setAttribute name, value
Set xmlElem = xmlElem.parentNode
state = stateRoot
Case "]"
xmlElem.setAttribute name, value
Set xmlElem = xmlElem.parentNode
state = stateRoot
Case ","
xmlElem.setAttribute name, value
state = stateRoot
Case "\"
state = stateValueUnquotedEscaped
Case Else
value = value + ch
End Select
Case stateValueUnquotedEscaped ' @@TODO: Handle escape sequences
value = value + ch
state = stateValueUnquoted
End Select
Next
Set JSONToXML = dom
End Function
Function XMLCreateChild(xmlParent, tagName)
Dim xmlChild
If xmlParent is Nothing Then
Set XMLCreateChild = Nothing
Exit Function
End If
If xmlParent.ownerDocument is Nothing Then
Set XMLCreateChild = Nothing
Exit Function
End If
Set xmlChild = xmlParent.ownerDocument.createElement(tagName)
xmlParent.appendChild xmlChild
Set XMLCreateChild = xmlChild
End Function
感谢伟大的功能斯蒂芬。请回顾以下适合您的想法的项目。 https://github.com/pravynandas/JSONToXML – PravyNandas
如何与ASPJSON这样做呢?
可从http://www.aspjson.com/
我就要用这个作为一个解决方案,一个很老的网站与编码数据的发送的MongoDB Ajax调用(使用jQuery),进行测试。
这是最好的解决方案,它的工作原理和性能都很好。 –
退房https://github.com/rcdmk/aspJSON
不知道这在洛根的答复中提到,以www.ASPJSON.com任何关系(现已解散)。
使用这个,似乎我的情况下工作: [demon.tw(http://demon.tw/my-work/vbs-json.html#code) –