首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用VBScript - QTP/UFT解析JSON文件

使用VBScript - QTP/UFT解析JSON文件
EN

Stack Overflow用户
提问于 2020-01-30 15:44:38
回答 1查看 7.2K关注 0票数 0

我正在使用QTP/UFT自动化我的UI应用程序。我想将UI值与REST响应中的值进行比较。我是VBScript新手,我编写了方法来调用REST并获得响应,但是我正在试图找到一个如何使用VBScript解析JSON的解决方案。

请帮助我如何解析json响应?(下面是代码)还是用xml接受REST响应并在VBS中解析它比较容易呢?

感谢你的帮助和想法。谢谢!

代码语言:javascript
复制
userName    =   "abc@xyz.com"
password    =   "blah.123"
acctNumber  =   "01999994201"

URL1="https://CXaic-blah.blah.ocp.blah.com:243/ic/api/integration/v1/flows/rest/blah_ACCNTSEARCH/1.0/accountSearch?accountNumber=" 
URL=URL1&acctNumber
Set objXmlHttpMain = CreateObject("Msxml2.ServerXMLHTTP") 
on error resume next 
objXmlHttpMain.open "GET",URL, False , userName, password
objXmlHttpMain.setRequestHeader "Accept", "application/json"
objXmlHttpMain.setRequestHeader "charset", "UTF-8"
objXmlHttpMain.send

restjsonresp    =   objXmlHttpMain.responseText

下面是我得到的json响应的格式:

代码语言:javascript
复制
{ 
   "searchResponse":{ 
      "element":[ 
         { 
            "accType":"R",
            "accountNumber":"1111111",
            "accountStatus":"A",
            "taxId":""
         }
      ]
   }
}
EN

回答 1

Stack Overflow用户

发布于 2020-02-04 13:45:06

虽然我没有QTP/UFT来测试或验证以下代码,但我提供了-这些JSON解析解决方案-是为了试验.

1)将JScript块注入"htmlfile“对象

代码语言:javascript
复制
Dim y, html : Set html = CreateObject("htmlfile")
Dim window : Set window = html.parentWindow
window.execScript "var json=" & restjsonresp & ";var e=new Enumerator(json.searchResponse.element);", "JScript"
While Not window.e.atEnd()
    Set y = window.e.item()
    Print "acctType: " & y.accType
    Print "accountNumber: " & y.accountNumber
    Print "accountStatus: " & y.accountStatus
    Print "taxId: " & y.taxId
    window.e.moveNext
Wend

2)使用“32-bit)”调用JScript代码(需要MSScriptControl.ScriptControl

代码语言:javascript
复制
Dim x, eng : Set eng = CreateObject("MSScriptControl.ScriptControl")
eng.Language = "JScript"
eng.AddCode "function json() { return " & restjsonresp & "; }"
Dim oResp : Set oResp = eng.Run("json")
For Each x In oResp.searchResponse.element
    Print "acctType: " & x.accType
    Print "accountNumber: " & x.accountNumber
    Print "accountStatus: " & x.accountStatus
    Print "taxId: " & x.taxId
Next

3)将JScript块注入"InternetExplorer.Application“(过火?性能hit)

代码语言:javascript
复制
Dim z, objIE : Set objIE = CreateObject("InternetExplorer.Application")
objIE.Navigate2 "about:blank"
objIE.Toolbar = False
objIE.StatusBar = False
objIE.MenuBar = False
Do While objIE.Busy
    Wait 1
Loop
objIE.Visible = False
objIE.document.open "text/html"
objIE.document.write "<script type='text/javascript'>document.json=" & restjsonresp & ";document.jsonEnum = new Enumerator(document.json.searchResponse.element);</script>"
objIE.document.close
While Not objIE.document.jsonEnum.atEnd()
    Set z = objIE.document.jsonEnum.item()
    Print "acctType: " & z.accType
    Print "accountNumber: " & z.accountNumber
    Print "accountStatus: " & z.accountStatus
    Print "taxId: " & z.taxId
    objIE.document.jsonEnum.moveNext
Wend
objIE.Quit

4)使用Demon的code)对象(是纯VBScript解决方案;尽管使用了更多的VBScript)

https://github.com/eklam/VbsJson

)使用正则表达式(仅用于简单、定义良好的JSON responses) )。

代码语言:javascript
复制
Dim re : Set re = New RegExp
re.IgnoreCase = True
re.Pattern = "\{\s*""searchResponse""\s*\:\s*\{\s*""element""\s*\:\s*\[\s*(\{\s*""accType""\s*\:\s*""(.*)""\s*,\s*""accountNumber""\s*\:\s*""(.*)""\s*,\s*""accountStatus""\s*\:\s*""(.*)""\s*,\s*""taxId""\s*\:\s*""(.*)""\s*\})\s*\]\s*\}\s*\}"
If re.Test(restjsonresp) Then
    Dim matches : Set matches = re.Execute(restjsonresp)
    Print "acctType: " & matches(0).SubMatches(1)
    Print "accountNumber: " & matches(0).SubMatches(2)
    Print "accountStatus: " & matches(0).SubMatches(3)
    Print "taxId: " & matches(0).SubMatches(4)
End If

6)将JSON转换为XML,然后解析(大量代码,潜在的XML )

https://github.com/pravynandas/JSONToXML

如果您可以控制响应,并交付XML而不是JSON,那么最好还是在QTP/ VBScript中使用XML。不管怎么说,我希望这里有帮助。

好好享受吧。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59989623

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档