解析 JSON 响应:
下面从文件中读取结果 json 并解析出每个解析。它用JSONConverter.bas
。注意我已经在 python 脚本中提取了“结果”JSON 集合,这与您所做的相同json("results")
在转换后的 JSON 字符串上通过Set json = JsonConverter.ParseJson(.responseText)("results")
.
添加后JSONConverter.bas
对于您的项目,您需要转到工具>参考>添加参考Microsoft Scripting Runtime
Option Explicit
Public Sub GetJSONExtract()
Dim fso As Object, jsonFile As Object, jsonText As String, json As Object, item As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Set jsonFile = fso.OpenTextFile("C:\Users\User\Desktop\Sample.json")
jsonText = jsonFile.ReadAll
Set json = JsonConverter.ParseJson(jsonText) '<== Using results collection
'Set json = JsonConverter.ParseJson(.responseText)("results") '<== In your vba XMLHTTP version
For Each item In json
Debug.Print item("resolve")
Next
End Sub
正如您所了解的如何解析我已经展示的 JSON。
补充笔记:
我实际上使用了如下所示的 python 脚本;改编自 API 文档。然后,我添加了一些代码,将响应写入 JSON 文件以供以后导入。使用 Anaconda/Spyder 运行。
import requests
import json
username = 'xxx'
key = 'yyy'
auth = (username, key)
base_url = 'https://api.passivetotal.org'
def passivetotal_get(path, query):
url = base_url + path
data = {'query': query}
response = requests.get(url, auth=auth, json=data)
return response.json()
pdns_results = passivetotal_get('/v2/dns/passive', 'passivetotal.org')
for resolve in pdns_results['results']:
print('Found resolution: {}'.format(resolve['resolve']))
with open(r"C:\Users\User\Desktop\Output.json", "w") as text_file:
text_file.write(json.dumps(pdns_results['results']))
这会打印出所有的解决方案。
原始返回的 JSON 结构如下所示:
返回的对象是字典的集合。您可以通过字典键访问所需的值"resolve"