Microsoft Excel - получить значение из столбца JSON - PullRequest
0 голосов
/ 09 октября 2019

Мы используем службу Azure APIM и связанные Insight App, чтобы получить журнал запросов для целей анализа.

Поскольку мы используем Imperva WAF, мы получаем IP-адреса Imperva и получаем IP-адреса клиентов в заголовке запроса через приложениеInsights Logs (Analytics).

Итак, получение данных в формате CSV, что-то вроде этого

"2019-10-06T17:21:20.2264252Z","|key",,"OPTIONS /Endpoint/","https://APIM/query",True,200,"0.3565","<250ms",request,"{""ApimanagementServiceName"":""APIM_name"",""ApimanagementRegion"":""Country"",""HTTP Method"":""OPTIONS"",""API Name"":""API"",""Cache"":""None"",""Request-Incap-Client-IP"":""2a:23c4:1c4c:6c00:a458_IP""}","{""Client Time (in ms)"":0,""Response Size"":334,""Request Size"":0}","OPTIONS /EndPoint/",Key,,,,,,,PC,,,"0.0.0.0",,,"Country",,"APIM Country","APIM Country","key","App Insights","key","apim:0.81.21.0","key",1

Теперь я хочу извлечь IP из элемента Request-Incap-Client-IP, которыйхранится в формате JSON, начиная с «ApimanagementServiceName».

Я посмотрел справку в Интернете, и все говорят о макросе, пользовательском коде.

По моему мнению, в Excel должна быть функция для анализа json иполучить значение из определенных столбцов, я имею в виду решение должно быть простым и простым.

1 Ответ

1 голос
/ 09 октября 2019

Используйте эту пользовательскую библиотеку для анализа / чтения / записи файлов и потоков JSON

https://github.com/VBA-tools/VBA-JSON

Dim fso As New FileSystemObject
Dim JsonTS As TextStream
Dim Json As Dictionary
Dim JsonText As String

Set JsonTS = fso.OpenTextFile("yourfile.csv", ForReading)
JsonText = JsonTS.ReadAll
JsonTS.Close
'process the string to isolate JSON part of your CSV using Split/regexp
Set Json = JsonConverter.ParseJson(JsonText)

Затем вы можете просто получить значение, например:

Dim ipValue as String

ipValue = Json("Request-Incap-Client-IP")
...