<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: parsing json with SPL in Splunk Search</title>
    <link>https://community.splunk.com/t5/Splunk-Search/How-to-parse-json-with-SPL/m-p/647535#M224122</link>
    <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://community.splunk.com/t5/user/viewprofilepage/user-id/256709"&gt;@Strangertinz&lt;/a&gt;,&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Depending on your exact data format, something like this may work:&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;| makeresults | eval _raw="{\"Key1\": \"Value1\", \"Key2\": { \"subKey2_1\": \"sub value1 for key2\", \"subKey2_2\": [ {\"subkey2_2_key1\": \"value1_sub22\", \"subkey2_2_key2\": \"value2_sub22\" }, {\"subkey2_2_key1\": \"value1_sub22_2\", \"subkey2_2_key2\": \"value2_sub22_2 ---- value interested in \" }, {\"subkey2_2_key1\": \"value1_sub22_3\", \"subkey2_2_key2\": \"value2_sub22_3\" } ], \"subKey2_3\": \"sub value3 for key2\" }, \"Key3\": \"Value3\", \"Key4\": \"Value4\"}"
``` Above is just generating the data ```

| spath path="Key2{}.subKey2_2{}" output="json"
| fromjson json
| mvexpand json
| spath input=json
| search subkey2_2_key1="value1_sub22_2"
| table subkey2_2_key1, subkey2_2_key2&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;That gives you:&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="danspav_0-1687216826043.png" style="width: 400px;"&gt;&lt;img src="https://community.splunk.com/t5/image/serverpage/image-id/25915iDD386D642BC92531/image-size/medium?v=v2&amp;amp;px=400" role="button" title="danspav_0-1687216826043.png" alt="danspav_0-1687216826043.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="danspav_1-1687216929276.png" style="width: 999px;"&gt;&lt;img src="https://community.splunk.com/t5/image/serverpage/image-id/25916i2D4EED054A0DCCF8/image-size/large?v=v2&amp;amp;px=999" role="button" title="danspav_1-1687216929276.png" alt="danspav_1-1687216929276.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;If you don't want to figure out the spath path (Key2{}.subKey2_2{}) then you can just use the &lt;A href="https://docs.splunk.com/Documentation/SCS/current/SearchReference/JSONFunctions" target="_self"&gt;fromjson&lt;/A&gt; command:&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;``` As above... then: ```
| fromjson _raw
| fromjson Key2
| mvexpand subKey2_2
| fromjson subKey2_2
| search subkey2_2_key1="value1_sub22_2"
| table subkey2_2_key1, subKey2_2_key2, *&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Hopefully that points you in the right direction.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Cheers,&lt;BR /&gt;Daniel&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Mon, 19 Jun 2023 23:28:23 GMT</pubDate>
    <dc:creator>danspav</dc:creator>
    <dc:date>2023-06-19T23:28:23Z</dc:date>
    <item>
      <title>How to parse json with SPL?</title>
      <link>https://community.splunk.com/t5/Splunk-Search/How-to-parse-json-with-SPL/m-p/647527#M224118</link>
      <description>&lt;P&gt;Hi Splunk Community,&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;I am looking to create a search that can help me extract a specific key/value pair within a nested json data.&lt;BR /&gt;&lt;BR /&gt;The tricky part is that the nested json data is within an array of dictionaries with same keys. I want to extract a particular key/value within a dictionary only when a particular key is equal to a specific value.&amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;Sample JSON below..&lt;BR /&gt;------------------------------------------------------------------------------------------------------&lt;BR /&gt;{Key1: "Value1",&lt;BR /&gt;Key2: {&lt;BR /&gt;subKey2_1: "sub value1 for key2",&lt;BR /&gt;subKey2_2: [&lt;BR /&gt;{subkey2_2_key1: "value1_sub22",&lt;BR /&gt;subkey2_2_key2: "value2_sub22"&lt;BR /&gt;},&lt;BR /&gt;{subkey2_2_key1: "value1_sub22_2",&lt;BR /&gt;subkey2_2_key2: "value2_sub22_2 ---- value interested in "&lt;BR /&gt;},&lt;BR /&gt;{subkey2_2_key1: "value1_sub22_3",&lt;BR /&gt;subkey2_2_key2: "value2_sub22_3"&lt;BR /&gt;}&lt;BR /&gt;],&lt;BR /&gt;subKey2_3: "sub value3 for key2"&lt;BR /&gt;},&lt;BR /&gt;Key3: "Value3",&lt;BR /&gt;Key4: "Value4"&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;------------------------------------------------------------------------------------------------------&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;I am looking to extract the value for&amp;nbsp; --&amp;gt;"subkey2_2_key2"&lt;BR /&gt;&lt;BR /&gt;when -- &amp;gt; subkey2_2_key1: "value1_sub22_2"&lt;/P&gt;</description>
      <pubDate>Tue, 20 Jun 2023 02:21:20 GMT</pubDate>
      <guid>https://community.splunk.com/t5/Splunk-Search/How-to-parse-json-with-SPL/m-p/647527#M224118</guid>
      <dc:creator>Strangertinz</dc:creator>
      <dc:date>2023-06-20T02:21:20Z</dc:date>
    </item>
    <item>
      <title>Re: parsing json with SPL</title>
      <link>https://community.splunk.com/t5/Splunk-Search/How-to-parse-json-with-SPL/m-p/647535#M224122</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://community.splunk.com/t5/user/viewprofilepage/user-id/256709"&gt;@Strangertinz&lt;/a&gt;,&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Depending on your exact data format, something like this may work:&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;| makeresults | eval _raw="{\"Key1\": \"Value1\", \"Key2\": { \"subKey2_1\": \"sub value1 for key2\", \"subKey2_2\": [ {\"subkey2_2_key1\": \"value1_sub22\", \"subkey2_2_key2\": \"value2_sub22\" }, {\"subkey2_2_key1\": \"value1_sub22_2\", \"subkey2_2_key2\": \"value2_sub22_2 ---- value interested in \" }, {\"subkey2_2_key1\": \"value1_sub22_3\", \"subkey2_2_key2\": \"value2_sub22_3\" } ], \"subKey2_3\": \"sub value3 for key2\" }, \"Key3\": \"Value3\", \"Key4\": \"Value4\"}"
``` Above is just generating the data ```

| spath path="Key2{}.subKey2_2{}" output="json"
| fromjson json
| mvexpand json
| spath input=json
| search subkey2_2_key1="value1_sub22_2"
| table subkey2_2_key1, subkey2_2_key2&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;That gives you:&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="danspav_0-1687216826043.png" style="width: 400px;"&gt;&lt;img src="https://community.splunk.com/t5/image/serverpage/image-id/25915iDD386D642BC92531/image-size/medium?v=v2&amp;amp;px=400" role="button" title="danspav_0-1687216826043.png" alt="danspav_0-1687216826043.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="danspav_1-1687216929276.png" style="width: 999px;"&gt;&lt;img src="https://community.splunk.com/t5/image/serverpage/image-id/25916i2D4EED054A0DCCF8/image-size/large?v=v2&amp;amp;px=999" role="button" title="danspav_1-1687216929276.png" alt="danspav_1-1687216929276.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;If you don't want to figure out the spath path (Key2{}.subKey2_2{}) then you can just use the &lt;A href="https://docs.splunk.com/Documentation/SCS/current/SearchReference/JSONFunctions" target="_self"&gt;fromjson&lt;/A&gt; command:&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;``` As above... then: ```
| fromjson _raw
| fromjson Key2
| mvexpand subKey2_2
| fromjson subKey2_2
| search subkey2_2_key1="value1_sub22_2"
| table subkey2_2_key1, subKey2_2_key2, *&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Hopefully that points you in the right direction.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Cheers,&lt;BR /&gt;Daniel&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 19 Jun 2023 23:28:23 GMT</pubDate>
      <guid>https://community.splunk.com/t5/Splunk-Search/How-to-parse-json-with-SPL/m-p/647535#M224122</guid>
      <dc:creator>danspav</dc:creator>
      <dc:date>2023-06-19T23:28:23Z</dc:date>
    </item>
    <item>
      <title>Re: How to parse json with SPL?</title>
      <link>https://community.splunk.com/t5/Splunk-Search/How-to-parse-json-with-SPL/m-p/647841#M224197</link>
      <description>&lt;DIV&gt;Hi Danspav! Thanks the response certainly solved the hurdle I was on.. However, I am now stuck again on a different problem,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Is there a way for me to create a table output of the output of the json keys (possibly filter the keys to be a different name as well to represent their uniqueness).&amp;nbsp; Example below..&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Json data:&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Key1: "Value1",&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Key2: {&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; subKey2_1: "sub value1 for key2",&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Manifest: [&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; flight: "start",&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; City: "Los Angeles"&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; code: 7870&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Inventory: {&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; snacks: 300&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; status: "full"&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;flight: "end",&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; City: "Las Vegas"&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; code: 7470&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Inventory: {&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;snacks: 56&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;status: "near empty"&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ],&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;subKey2_3: "sub value3 for key2"&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;},&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; Key3: "Value3",&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; Key4: "Value4"&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;I am looking to create a table with a single row of the fields and values below&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Field&amp;nbsp; = Value&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;city_origin = "Los Angeles"&lt;/DIV&gt;&lt;DIV&gt;code_origin = 7870&lt;/DIV&gt;&lt;DIV&gt;inventory_snacks_origin=300&lt;/DIV&gt;&lt;DIV&gt;inventory_status_origin="full"&lt;/DIV&gt;&lt;DIV&gt;city_end = "Las Vegas"&lt;/DIV&gt;&lt;DIV&gt;code_end = 7470&lt;/DIV&gt;&lt;DIV&gt;inventory_snacks_end=56&lt;/DIV&gt;&lt;DIV&gt;inventory_status_end="near empty"&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;</description>
      <pubDate>Wed, 21 Jun 2023 18:45:09 GMT</pubDate>
      <guid>https://community.splunk.com/t5/Splunk-Search/How-to-parse-json-with-SPL/m-p/647841#M224197</guid>
      <dc:creator>Strangertinz</dc:creator>
      <dc:date>2023-06-21T18:45:09Z</dc:date>
    </item>
    <item>
      <title>Re: How to parse json with SPL?</title>
      <link>https://community.splunk.com/t5/Splunk-Search/How-to-parse-json-with-SPL/m-p/648027#M224238</link>
      <description>&lt;P class="lia-align-left"&gt;HI&amp;nbsp;&lt;a href="https://community.splunk.com/t5/user/viewprofilepage/user-id/256709"&gt;@Strangertinz&lt;/a&gt;,&lt;/P&gt;&lt;P class="lia-align-left"&gt;Try this search:&lt;/P&gt;&lt;P class="lia-align-left"&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;| makeresults | eval _raw="{ \"Key1\": \"Value1\", \"Key2\": { \"subKey2_1\": \"sub value1 for key2\", \"Manifest\": [{ \"flight\": \"start\", \"City\": \"Los Angeles\", \"code\": 7870, \"Inventory\": { \"snacks\": 300, \"status\": \"full\" } }, { \"flight\": \"end\", \"City\": \"Las Vegas\", \"code\": 7470, \"Inventory\": { \"snacks\": 56, \"status\": \"near empty\" } } ], \"subKey2_3\": \"sub value3 for key2\" }, \"Key3\": \"Value3\", \"Key4\": \"Value4\"}"
| fromjson _raw
``` Above is just to format the data into a JSON event```

``` Get the JSON data from Key2```
| fromjson Key2
``` Split out the origin and destination fields```
| eval Origin = mvindex(Manifest,0)
| eval Destination = mvindex(Manifest,1)
| fields - Manifest, _raw, _time, Key2
``` Update the field names so we know which was Origin and which was Destination```
| rex mode=sed field=Origin "s/\"([^\"]+)\":/\"\\1_Origin\":/g"
| rex mode=sed field=Destination "s/\"([^\"]+)\":/\"\\1_Destination\":/g"


``` Extract all the fields from the JSON array ```
| fromjson Destination
| fromjson Origin
| fromjson Inventory_Destination
| fromjson Inventory_Origin
| fields - Inventory_End, Inventory_Origin

``` Table everything out on one row ```
| table City_Origin, code_Origin, snacks_Origin, status_Origin, City_Destination, code_Destination, snacks_Destination, status_Destination&lt;/LI-CODE&gt;&lt;P&gt;&lt;BR /&gt;I'm using&amp;nbsp;&lt;EM&gt;rex mode=sed&lt;/EM&gt; to update the JSON with more descriptive names for the duplicated fields.&lt;BR /&gt;&lt;BR /&gt;The output is:&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="danspav_0-1687499153157.png" style="width: 999px;"&gt;&lt;img src="https://community.splunk.com/t5/image/serverpage/image-id/25989i45551C1A6D9DDC2A/image-size/large?v=v2&amp;amp;px=999" role="button" title="danspav_0-1687499153157.png" alt="danspav_0-1687499153157.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;Is that what you were looking for?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Cheers&lt;BR /&gt;Daniel&lt;/P&gt;</description>
      <pubDate>Fri, 23 Jun 2023 05:48:09 GMT</pubDate>
      <guid>https://community.splunk.com/t5/Splunk-Search/How-to-parse-json-with-SPL/m-p/648027#M224238</guid>
      <dc:creator>danspav</dc:creator>
      <dc:date>2023-06-23T05:48:09Z</dc:date>
    </item>
  </channel>
</rss>

