- Mark as New
- Bookmark Message
- Subscribe to Message
- Mute Message
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
How to parse json data event into table format?
Need splunk query to parse json Data into table format.
raw data/event in splunk:
<158>May 09 04:33:46 detailedSwitchData {'cnxiandcm1': {'Ethernet1': 'MAC ACL Enabled', 'Ethernet2': 'MAC ACL Enabled', 'Ethernet3': 'MAC ACL Enabled', 'Ethernet4': 'MAC ACL Enabled', 'Ethernet5': 'Dot1x Enabled', 'Ethernet6': 'Dot1x Enabled', 'Ethernet7': 'Dot1x Enabled', 'Ethernet8': 'Dot1x Enabled', 'Ethernet9': 'Dot1x Enabled', 'Ethernet10': 'Dot1x Enabled', 'Ethernet11': 'Dot1x Enabled', 'Ethernet12': 'Dot1x Enabled', 'Ethernet13': 'Dot1x Enabled', 'Ethernet14': 'Dot1x Enabled', 'Ethernet15': 'Dot1x Enabled', 'Ethernet16': 'Dot1x Enabled', 'Ethernet17': 'Dot1x Enabled', 'Ethernet18': 'Dot1x Enabled', 'Ethernet19': 'Dot1x Enabled', 'Ethernet20': 'Dot1x Enabled', 'Ethernet21': 'Dot1x Enabled', 'Ethernet22': 'Dot1x Enabled', 'Ethernet23': 'Dot1x Enabled', 'Ethernet24': 'Dot1x Enabled', 'Ethernet25': 'Dot1x Enabled', 'Ethernet26': 'Dot1x Enabled', 'Ethernet27': 'Dot1x Enabled', 'Ethernet28': 'Dot1x Enabled', 'Ethernet29': 'Dot1x Enabled', 'Ethernet30': 'Dot1x Enabled', 'Ethernet31': 'Dot1x Enabled', 'Ethernet32': 'Dot1x Enabled', 'Ethernet33': 'Dot1x Enabled', 'Ethernet34': 'Dot1x Enabled', 'Ethernet35': 'Dot1x Enabled', 'Ethernet36': 'Dot1x Enabled', 'Ethernet37': 'Dot1x Enabled', 'Ethernet38': 'Dot1x Enabled', 'Ethernet39': 'Dot1x Enabled', 'Ethernet40': 'Dot1x Enabled', 'Ethernet41': 'Dot1x Enabled', 'Ethernet42': 'Dot1x Enabled', 'Ethernet43': 'Dot1x Enabled', 'Ethernet44': 'Dot1x Enabled', 'Ethernet45': 'Dot1x Enabled', 'Ethernet46': 'Dot1x Enabled', 'Ethernet47': 'Dot1x Enabled', 'Ethernet48': 'Dot1x Enabled', 'Ethernet49': 'Dot1x Enabled', 'Ethernet50': 'Dot1x Enabled', 'Ethernet51': 'Dot1x Enabled', 'Ethernet52': 'Dot1x Enabled', 'Ethernet53': 'Dot1x Enabled', 'Ethernet54': 'Dot1x Enabled', 'Ethernet55': 'Dot1x Enabled', 'Ethernet56': 'Dot1x Enabled', 'Ethernet57': 'Dot1x Enabled', 'Ethernet58': 'Dot1x Enabled', 'Ethernet59': 'Dot1x Enabled', 'Ethernet60': 'Dot1x Enabled', 'Ethernet61': 'Dot1x Enabled', 'Ethernet62': 'Dot1x Enabled', 'Ethernet63': 'Dot1x Enabled', 'Ethernet64': 'Dot1x Enabled', 'Ethernet65': 'Dot1x Enabled', 'Ethernet66': 'Dot1x Enabled', 'Ethernet67': 'Dot1x Enabled', 'Ethernet68': 'Dot1x Enabled', 'Ethernet69': 'Dot1x Enabled', 'Ethernet70': 'Dot1x Enabled', 'Ethernet71': 'Dot1x Enabled', 'Ethernet72': 'Dot1x Enabled', 'Ethernet73': 'Dot1x Enabled', 'Ethernet74': 'Dot1x Enabled', 'Ethernet75': 'Dot1x Enabled', 'Ethernet76': 'Dot1x Enabled', 'Ethernet77': 'Dot1x Enabled', 'Ethernet78': 'Dot1x Enabled', 'Ethernet79': 'Dot1x Enabled', 'Ethernet80': 'Dot1x Enabled', 'Ethernet81': 'Dot1x Enabled', 'Ethernet82': 'Dot1x Enabled', 'Ethernet83': 'Dot1x Enabled', 'Ethernet84': 'Dot1x Enabled', 'Ethernet85': 'Dot1x Enabled', 'Ethernet86': 'Dot1x Enabled', 'Ethernet87': 'Dot1x Enabled', 'Ethernet88': 'Dot1x Enabled', 'Ethernet89': 'MAC ACL Enabled', 'Ethernet90': 'MAC ACL Enabled', 'Ethernet91': 'MAC ACL Enabled', 'Ethernet92': 'Dot1x Enabled', 'Ethernet93': 'Dot1x Enabled', 'Ethernet94': 'MAC ACL Enabled', 'Ethernet95': 'MAC ACL Enabled', 'Ethernet96': 'Dot1x Enabled', 'Ethernet97/1': 'Uplink Port', 'Ethernet98/1': 'Uplink Port', 'Ethernet99/1': 'Uplink Port', 'Ethernet100/1': 'Uplink Port', 'Ethernet101/1': 'Uplink Port', 'Management1': 'Uplink Port'}}
Output table :
- Mark as New
- Bookmark Message
- Subscribe to Message
- Mute Message
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

I would recommend converting the data to conformant JSON first.
| rex "detailedSwitchData *(?<detailedSwitchData>{.*})"
| rex field=detailedSwitchData mode=sed "s/'/\"/g"
| spath input=detailedSwitchData
Your sample data gives
- Mark as New
- Bookmark Message
- Subscribe to Message
- Mute Message
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

The issue with using spath is that the interfaces are used as field names not field values
- Mark as New
- Bookmark Message
- Subscribe to Message
- Mute Message
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

@ITWhisperer makes an acute observation! The data is not formatted for machine consumption no matter which language you use. (Kind of intuitive for humans, I admit.)
So, we'll give it some transformation if you cannot persuade the developer to change. (Or if this is from an outside vendor.)
| rex "detailedSwitchData *(?<detailedSwitchData>{.*})"
| rex field=detailedSwitchData mode=sed "s/'/\"/g"
| spath input=detailedSwitchData
| rename *.* AS *_*
| foreach cnxiandcm1_*
[eval interface = mvappend(interface, "<<MATCHSTR>>" . "::" . '<<FIELD>>')]
| mvexpand interface
| eval interface = split(interface, "::")
| eval status = mvindex(interface, 1), interface = mvindex(interface, 0)
With your sample data, I get
interface | status |
Ethernet1 | MAC ACL Enabled |
Ethernet10 | Dot1x Enabled |
Ethernet100/1 | Uplink Port |
Ethernet101/1 | Uplink Port |
Ethernet11 | Dot1x Enabled |
Ethernet12 | Dot1x Enabled |
Ethernet13 | Dot1x Enabled |
Ethernet14 | Dot1x Enabled |
Ethernet15 | Dot1x Enabled |
Ethernet16 | Dot1x Enabled |
Ethernet17 | Dot1x Enabled |
Ethernet18 | Dot1x Enabled |
Ethernet19 | Dot1x Enabled |
Ethernet2 | MAC ACL Enabled |
Ethernet20 | Dot1x Enabled |
Ethernet21 | Dot1x Enabled |
Ethernet22 | Dot1x Enabled |
Ethernet23 | Dot1x Enabled |
Ethernet24 | Dot1x Enabled |
Ethernet25 | Dot1x Enabled |
Ethernet26 | Dot1x Enabled |
Ethernet27 | Dot1x Enabled |
Ethernet28 | Dot1x Enabled |
Ethernet29 | Dot1x Enabled |
Ethernet3 | MAC ACL Enabled |
Ethernet30 | Dot1x Enabled |
Ethernet53 | Dot1x Enabled |
Ethernet54 | Dot1x Enabled |
Ethernet55 | Dot1x Enabled |
Ethernet82 | Dot1x Enabled |
Ethernet83 | Dot1x Enabled |
Ethernet84 | Dot1x Enabled |
Ethernet85 | Dot1x Enabled |
Ethernet86 | Dot1x Enabled |
Ethernet87 | Dot1x Enabled |
Ethernet93 | Dot1x Enabled |
Ethernet94 | MAC ACL Enabled |
Ethernet95 | MAC ACL Enabled |
Ethernet96 | Dot1x Enabled |
Ethernet97/1 | Uplink Port |
Ethernet98/1 | Uplink Port |
Ethernet99/1 | Uplink Port |
Management1 | Uplink Port |
Here's an emulation that you can play with and compare with real data
| makeresults
| eval _raw = "<158>May 09 04:33:46 detailedSwitchData {'cnxiandcm1': {'Ethernet1': 'MAC ACL Enabled', 'Ethernet2': 'MAC ACL Enabled', 'Ethernet3': 'MAC ACL Enabled', 'Ethernet4': 'MAC ACL Enabled', 'Ethernet5': 'Dot1x Enabled', 'Ethernet6': 'Dot1x Enabled', 'Ethernet7': 'Dot1x Enabled', 'Ethernet8': 'Dot1x Enabled', 'Ethernet9': 'Dot1x Enabled', 'Ethernet10': 'Dot1x Enabled', 'Ethernet11': 'Dot1x Enabled', 'Ethernet12': 'Dot1x Enabled', 'Ethernet13': 'Dot1x Enabled', 'Ethernet14': 'Dot1x Enabled', 'Ethernet15': 'Dot1x Enabled', 'Ethernet16': 'Dot1x Enabled', 'Ethernet17': 'Dot1x Enabled', 'Ethernet18': 'Dot1x Enabled', 'Ethernet19': 'Dot1x Enabled', 'Ethernet20': 'Dot1x Enabled', 'Ethernet21': 'Dot1x Enabled', 'Ethernet22': 'Dot1x Enabled', 'Ethernet23': 'Dot1x Enabled', 'Ethernet24': 'Dot1x Enabled', 'Ethernet25': 'Dot1x Enabled', 'Ethernet26': 'Dot1x Enabled', 'Ethernet27': 'Dot1x Enabled', 'Ethernet28': 'Dot1x Enabled', 'Ethernet29': 'Dot1x Enabled', 'Ethernet30': 'Dot1x Enabled', 'Ethernet31': 'Dot1x Enabled', 'Ethernet32': 'Dot1x Enabled', 'Ethernet33': 'Dot1x Enabled', 'Ethernet34': 'Dot1x Enabled', 'Ethernet35': 'Dot1x Enabled', 'Ethernet36': 'Dot1x Enabled', 'Ethernet37': 'Dot1x Enabled', 'Ethernet38': 'Dot1x Enabled', 'Ethernet39': 'Dot1x Enabled', 'Ethernet40': 'Dot1x Enabled', 'Ethernet41': 'Dot1x Enabled', 'Ethernet42': 'Dot1x Enabled', 'Ethernet43': 'Dot1x Enabled', 'Ethernet44': 'Dot1x Enabled', 'Ethernet45': 'Dot1x Enabled', 'Ethernet46': 'Dot1x Enabled', 'Ethernet47': 'Dot1x Enabled', 'Ethernet48': 'Dot1x Enabled', 'Ethernet49': 'Dot1x Enabled', 'Ethernet50': 'Dot1x Enabled', 'Ethernet51': 'Dot1x Enabled', 'Ethernet52': 'Dot1x Enabled', 'Ethernet53': 'Dot1x Enabled', 'Ethernet54': 'Dot1x Enabled', 'Ethernet55': 'Dot1x Enabled', 'Ethernet56': 'Dot1x Enabled', 'Ethernet57': 'Dot1x Enabled', 'Ethernet58': 'Dot1x Enabled', 'Ethernet59': 'Dot1x Enabled', 'Ethernet60': 'Dot1x Enabled', 'Ethernet61': 'Dot1x Enabled', 'Ethernet62': 'Dot1x Enabled', 'Ethernet63': 'Dot1x Enabled', 'Ethernet64': 'Dot1x Enabled', 'Ethernet65': 'Dot1x Enabled', 'Ethernet66': 'Dot1x Enabled', 'Ethernet67': 'Dot1x Enabled', 'Ethernet68': 'Dot1x Enabled', 'Ethernet69': 'Dot1x Enabled', 'Ethernet70': 'Dot1x Enabled', 'Ethernet71': 'Dot1x Enabled', 'Ethernet72': 'Dot1x Enabled', 'Ethernet73': 'Dot1x Enabled', 'Ethernet74': 'Dot1x Enabled', 'Ethernet75': 'Dot1x Enabled', 'Ethernet76': 'Dot1x Enabled', 'Ethernet77': 'Dot1x Enabled', 'Ethernet78': 'Dot1x Enabled', 'Ethernet79': 'Dot1x Enabled', 'Ethernet80': 'Dot1x Enabled', 'Ethernet81': 'Dot1x Enabled', 'Ethernet82': 'Dot1x Enabled', 'Ethernet83': 'Dot1x Enabled', 'Ethernet84': 'Dot1x Enabled', 'Ethernet85': 'Dot1x Enabled', 'Ethernet86': 'Dot1x Enabled', 'Ethernet87': 'Dot1x Enabled', 'Ethernet88': 'Dot1x Enabled', 'Ethernet89': 'MAC ACL Enabled', 'Ethernet90': 'MAC ACL Enabled', 'Ethernet91': 'MAC ACL Enabled', 'Ethernet92': 'Dot1x Enabled', 'Ethernet93': 'Dot1x Enabled', 'Ethernet94': 'MAC ACL Enabled', 'Ethernet95': 'MAC ACL Enabled', 'Ethernet96': 'Dot1x Enabled', 'Ethernet97/1': 'Uplink Port', 'Ethernet98/1': 'Uplink Port', 'Ethernet99/1': 'Uplink Port', 'Ethernet100/1': 'Uplink Port', 'Ethernet101/1': 'Uplink Port', 'Management1': 'Uplink Port'}}"
- Mark as New
- Bookmark Message
- Subscribe to Message
- Mute Message
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content


What have you tried so far? How did it not meet expectations?
If this reply helps you, Karma would be appreciated.
- Mark as New
- Bookmark Message
- Subscribe to Message
- Mute Message
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

| rex max_match=0 "(: \{)?'(?<InterfaceStatus>[^']+': '[^']+)'(, )?"
| fields - _raw
| mvexpand InterfaceStatus
| rex field=InterfaceStatus "(?<Interface>[^']+)': '(?<Status>[^']+)"
| fields Interface Status
