<?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: Grab json value with dynamic key from splunk in Splunk Search</title>
    <link>https://community.splunk.com/t5/Splunk-Search/Grab-json-value-with-dynamic-key-from-splunk/m-p/692968#M235844</link>
    <description>&lt;P&gt;First, thank you for using text to illustrate data, and clearly present desired result. &amp;nbsp;But next time make sure you preserve valid JSON syntax. &amp;nbsp;Your illustrated text is missing quotation marks required by JSON. &amp;nbsp;Correcting for syntax, I assume that the original data would look like&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;{
    "location": "US",
    "all_results": {
      "serial_a": {
        "result": "PASS",
        "version": "123",
        "data":[
          "data1",
          "data2",
          "data3"
        ]
      },
      "serial_b": {
        "result": "PASS",
        "version": "456",
        "data":[
          "data4",
          "data5"
        ]
      },
      "serial_c": {
        "result": "FAIL",
        "version": "789",
        "data":[
          "data6",
          "data7"
        ]
      }
    }
  }&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;This same ask has come several times recently, and there are several ways to do this. &amp;nbsp;This time, I'll try something new, and less roundabout in logic.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;| fields location
| spath path=all_results
| fields - _*
| eval serial_number = json_array_to_mv(json_keys(all_results))
| mvexpand serial_number
| eval all_results = json_extract(all_results, serial_number)
| spath input=all_results
| fields - all_results
| rename data{} as data
| eval data = mvjoin(data, ",")&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;You data gives&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;location&lt;/TD&gt;&lt;TD&gt;data&lt;/TD&gt;&lt;TD&gt;result&lt;/TD&gt;&lt;TD&gt;serial_number&lt;/TD&gt;&lt;TD&gt;version&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;US&lt;/TD&gt;&lt;TD&gt;data1,data2,data3&lt;/TD&gt;&lt;TD&gt;PASS&lt;/TD&gt;&lt;TD&gt;serial_a&lt;/TD&gt;&lt;TD&gt;123&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;US&lt;/TD&gt;&lt;TD&gt;data4,data5&lt;/TD&gt;&lt;TD&gt;PASS&lt;/TD&gt;&lt;TD&gt;serial_b&lt;/TD&gt;&lt;TD&gt;456&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;US&lt;/TD&gt;&lt;TD&gt;data6,data7&lt;/TD&gt;&lt;TD&gt;FAIL&lt;/TD&gt;&lt;TD&gt;serial_c&lt;/TD&gt;&lt;TD&gt;789&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;This is an emulation for you to play around and compare with real data&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;| makeresults
| eval _raw = "{
    \"location\": \"US\",
    \"all_results\": {
      \"serial_a\": {
        \"result\": \"PASS\",
        \"version\": \"123\",
        \"data\":[
          \"data1\",
          \"data2\",
          \"data3\"
        ]
      },
      \"serial_b\": {
        \"result\": \"PASS\",
        \"version\": \"456\",
        \"data\":[
          \"data4\",
          \"data5\"
        ]
      },
      \"serial_c\": {
        \"result\": \"FAIL\",
        \"version\": \"789\",
        \"data\":[
          \"data6\",
          \"data7\"
        ]
      }
    }
  }"
| spath
``` data emulation above ```&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Thu, 11 Jul 2024 06:16:58 GMT</pubDate>
    <dc:creator>yuanliu</dc:creator>
    <dc:date>2024-07-11T06:16:58Z</dc:date>
    <item>
      <title>Grab json value with dynamic key from splunk</title>
      <link>https://community.splunk.com/t5/Splunk-Search/Grab-json-value-with-dynamic-key-from-splunk/m-p/692948#M235834</link>
      <description>&lt;P&gt;Hi everyone,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have a json data payload as below:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="python"&gt;{
    location: US
    all_results: {
      serial_a: {
        result: PASS,
        version: 123,
        data:[
          data1,
          data2,
          data3
        ]
      },
      serial_b: {
        result: PASS,
        version: 456,
        data:[
          data4,
          data5
        ]
      },
      serial_c: {
        result: FAIL,
        version: 789,
        data:[
          data6,
          data7
        ]
      }
    }
  }&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;and I would like to use splunk query and make a table as:&lt;/P&gt;&lt;TABLE border="1" width="100%"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD width="25%" height="25px"&gt;serial_number&amp;nbsp;&lt;/TD&gt;&lt;TD width="25%" height="25px"&gt;result&lt;/TD&gt;&lt;TD width="25%" height="25px"&gt;version&lt;/TD&gt;&lt;TD width="25%" height="25px"&gt;&amp;nbsp;data&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD height="69px"&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;serial_a&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/TD&gt;&lt;TD height="69px"&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;PASS&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/TD&gt;&lt;TD height="69px"&gt;123&lt;/TD&gt;&lt;TD height="69px"&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;data1&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;data2&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;data3&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD height="47px"&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;serial_b&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/TD&gt;&lt;TD height="47px"&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;PASS&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/TD&gt;&lt;TD height="47px"&gt;456&lt;/TD&gt;&lt;TD height="47px"&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;data4&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;data5&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD height="47px"&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;serial_c&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/TD&gt;&lt;TD height="47px"&gt;fail&lt;/TD&gt;&lt;TD height="47px"&gt;789&lt;/TD&gt;&lt;TD height="47px"&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;data6&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;data7&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;how to use splunk query to organize the result?&lt;BR /&gt;I know I'm able to grab the data by:&lt;BR /&gt;| spath path=all_results output=all_results&lt;BR /&gt;| eval all_results=json_extract(all_results)&lt;/P&gt;&lt;P&gt;The difficult part is at the&amp;nbsp;serial_number. They have some common prefix serial, but it's dynamic. Therefore , when I try to&amp;nbsp;grab the data inside serial_number, for example version, I'm not able to use query like:&lt;BR /&gt;| spath&amp;nbsp; output=version path=all_result.serial*.version&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;Could you give me some idea to do that? thank you!&lt;/P&gt;</description>
      <pubDate>Thu, 11 Jul 2024 00:45:56 GMT</pubDate>
      <guid>https://community.splunk.com/t5/Splunk-Search/Grab-json-value-with-dynamic-key-from-splunk/m-p/692948#M235834</guid>
      <dc:creator>darrfang</dc:creator>
      <dc:date>2024-07-11T00:45:56Z</dc:date>
    </item>
    <item>
      <title>Re: Grab json value with dynamic key from splunk</title>
      <link>https://community.splunk.com/t5/Splunk-Search/Grab-json-value-with-dynamic-key-from-splunk/m-p/692968#M235844</link>
      <description>&lt;P&gt;First, thank you for using text to illustrate data, and clearly present desired result. &amp;nbsp;But next time make sure you preserve valid JSON syntax. &amp;nbsp;Your illustrated text is missing quotation marks required by JSON. &amp;nbsp;Correcting for syntax, I assume that the original data would look like&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;{
    "location": "US",
    "all_results": {
      "serial_a": {
        "result": "PASS",
        "version": "123",
        "data":[
          "data1",
          "data2",
          "data3"
        ]
      },
      "serial_b": {
        "result": "PASS",
        "version": "456",
        "data":[
          "data4",
          "data5"
        ]
      },
      "serial_c": {
        "result": "FAIL",
        "version": "789",
        "data":[
          "data6",
          "data7"
        ]
      }
    }
  }&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;This same ask has come several times recently, and there are several ways to do this. &amp;nbsp;This time, I'll try something new, and less roundabout in logic.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;| fields location
| spath path=all_results
| fields - _*
| eval serial_number = json_array_to_mv(json_keys(all_results))
| mvexpand serial_number
| eval all_results = json_extract(all_results, serial_number)
| spath input=all_results
| fields - all_results
| rename data{} as data
| eval data = mvjoin(data, ",")&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;You data gives&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;location&lt;/TD&gt;&lt;TD&gt;data&lt;/TD&gt;&lt;TD&gt;result&lt;/TD&gt;&lt;TD&gt;serial_number&lt;/TD&gt;&lt;TD&gt;version&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;US&lt;/TD&gt;&lt;TD&gt;data1,data2,data3&lt;/TD&gt;&lt;TD&gt;PASS&lt;/TD&gt;&lt;TD&gt;serial_a&lt;/TD&gt;&lt;TD&gt;123&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;US&lt;/TD&gt;&lt;TD&gt;data4,data5&lt;/TD&gt;&lt;TD&gt;PASS&lt;/TD&gt;&lt;TD&gt;serial_b&lt;/TD&gt;&lt;TD&gt;456&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;US&lt;/TD&gt;&lt;TD&gt;data6,data7&lt;/TD&gt;&lt;TD&gt;FAIL&lt;/TD&gt;&lt;TD&gt;serial_c&lt;/TD&gt;&lt;TD&gt;789&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;This is an emulation for you to play around and compare with real data&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;| makeresults
| eval _raw = "{
    \"location\": \"US\",
    \"all_results\": {
      \"serial_a\": {
        \"result\": \"PASS\",
        \"version\": \"123\",
        \"data\":[
          \"data1\",
          \"data2\",
          \"data3\"
        ]
      },
      \"serial_b\": {
        \"result\": \"PASS\",
        \"version\": \"456\",
        \"data\":[
          \"data4\",
          \"data5\"
        ]
      },
      \"serial_c\": {
        \"result\": \"FAIL\",
        \"version\": \"789\",
        \"data\":[
          \"data6\",
          \"data7\"
        ]
      }
    }
  }"
| spath
``` data emulation above ```&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 11 Jul 2024 06:16:58 GMT</pubDate>
      <guid>https://community.splunk.com/t5/Splunk-Search/Grab-json-value-with-dynamic-key-from-splunk/m-p/692968#M235844</guid>
      <dc:creator>yuanliu</dc:creator>
      <dc:date>2024-07-11T06:16:58Z</dc:date>
    </item>
  </channel>
</rss>

