Ваше мероприятие недействительно JSON. Массив JSON не должен быть окружен "
s.
. Скопируйте ваше событие в любой из следующих JSON валидаторов и подтвердите, что оно неверно.
Теперь попробуйте с исправленным событием.
{"failure_reason":[{"module":"Status Report","reason":"Status Report is not available","statusCode":"503"}],"gen_flag":"GENERATED_PARTIAL","gen_date":"2020-02-15","siteid":"ABC","_action":"Change","wonum":"321"}
Вы можете видеть, что spath
правильно работает с измененным JSON при следующем поиске.
| makeresults
| eval raw="{\"failure_reason\":[{\"module\":\"Status Report\",\"reason\":\"Status Report is not available\",\"statusCode\":\"503\"}],\"gen_flag\":\"GENERATED_PARTIAL\",\"gen_date\":\"2020-02-15\",\"siteid\":\"ABC\",\"_action\":\"Change\",\"wonum\":\"321\"}"
| spath input=raw
Если вам нужен способ предварительной обработки события для удаления "
s из массива, вы можете попробовать следующее, что может удалить лишние "
s. Это действительно зависит от структуры мероприятия, и может не быть 100%, но должно быть достаточно, чтобы вы начали. Попробуйте исправить формат события у источника.
| makeresults | eval raw="{\"failure_reason\":\"[{\"module\":\"Status Report\",\"reason\":\"Status Report is not available\",\"statusCode\":\"503\"}]\",\"gen_flag\":\"GENERATED_PARTIAL\",\"gen_date\":\"2020-02-15\",\"siteid\":\"ABC\",\"_action\":\"Change\",\"wonum\":\"321\"}"
| rex mode=sed field=raw "s/\"\[/[/" | rex mode=sed field=raw "s/\]\"/]/"
| spath input=raw