<?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>article Parsing: Heterogeneous (Mixed) JSON Objects Flexible Manner in Member Articles</title>
    <link>https://community.qlik.com/t5/Member-Articles/Parsing-Heterogeneous-Mixed-JSON-Objects-Flexible-Manner/ta-p/2535225</link>
    <description>&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="MixedJSON2.png" style="width: 312px;"&gt;&lt;img src="https://community.qlik.com/t5/image/serverpage/image-id/184734i2755A4FC6FF4974D/image-size/large?v=v2&amp;amp;px=999" role="button" title="MixedJSON2.png" alt="MixedJSON2.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;As you look at the image above you will notice multiple JSON objects. In the previous post&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;A href="https://community.qlik.com/t5/Member-Articles/Parsing-Heterogeneous-Mixed-JSON-Objects-Fixed-Manner/ta-p/2535212" target="_blank" rel="noopener"&gt;Parsing: Heterogeneous (Mixed) JSON Objects Fixed Manner&lt;/A&gt; we walked through how we could easily handle this type of data in a fixed way. &lt;STRONG&gt;&lt;EM&gt;All you need to do is know every single field:value pair that will ever come to you.&amp;nbsp;&lt;/EM&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H2&gt;&lt;SPAN&gt;Flexibility&lt;/SPAN&gt;&lt;/H2&gt;
&lt;P&gt;&lt;SPAN&gt;If you haven't already read that previous post be sure to do so and go through the practice. You need to understand that while easy to maintain for new fields that come across ... the thought of knowing every single field:value pair that will ever come to you is kind of daunting. Right?&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;I kind of slipped it in there but:&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;SPAN&gt;You know that you can't see over the horizon to know which bandits are heading to your town.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN&gt;You also know that while the job security is great, constantly being behind and having to rush to identify the new bandits can cause a lot of stress.&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN&gt;This post will walk you through the same data that we dealt with in the previous post, but will allow you to read all of the values for all fields that exist now, and those that might come riding in to town tomorrow. &lt;/SPAN&gt;&lt;/P&gt;
&lt;H2&gt;&lt;SPAN&gt;Practice&lt;/SPAN&gt;&lt;/H2&gt;
&lt;P&gt;&lt;SPAN&gt;If you haven't already done so for a previous post, go ahead and download the &lt;STRONG&gt;&lt;FONT color="#993300"&gt;WildDataFrontier.qvf&lt;/FONT&gt;&lt;/STRONG&gt; that is attached, uploaded it to your environment and open the load script.&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Section5.png" style="width: 239px;"&gt;&lt;img src="https://community.qlik.com/t5/image/serverpage/image-id/184736iFD30D1E66EE41148/image-size/large?v=v2&amp;amp;px=999" role="button" title="Section5.png" alt="Section5.png" /&gt;&lt;/span&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;{ Notice there are multiple sections. Each of them will pertain to a separate article and for this article the section named "&lt;STRONG&gt;&lt;FONT color="#993300"&gt;5 - Mixed JSON: Flexible Values&lt;/FONT&gt;&lt;/STRONG&gt;" is the one you want to have at the top of your script for this post. }&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Section5Load.png" style="width: 657px;"&gt;&lt;img src="https://community.qlik.com/t5/image/serverpage/image-id/184737i93B4318E86C523EB/image-size/large?v=v2&amp;amp;px=999" role="button" title="Section5Load.png" alt="Section5Load.png" /&gt;&lt;/span&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Same basic data as the previous post, but I've also included the 4'th row of data that I asked you to do as part of the practice. The flexibility that you need as a data sheriff in this JSON Wild Data Frontier is going to be handled by the incredible flexibility available to you in how Qlik Sense can load and transform that data.&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&gt;In previous posts we've simply done a resident load to transform the data directly in 1 step using that ever so flexible JsonGet() function. In this post our transformation is going to do a few things that may be new to you. Be sure to click the links for each to get at least an introduction to them:&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/load-data-from-previously-loaded-table.htm" target="_blank" rel="noopener"&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;Preceding Load&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://help.qlik.com/en-US/sense/May2025/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Generic.htm" target="_blank" rel="noopener"&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;Generic Load&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;H2&gt;Working backwards&lt;/H2&gt;
&lt;P&gt;Once you have the application open and have moved section&amp;nbsp;&lt;SPAN&gt;"&lt;STRONG&gt;&lt;FONT color="#993300"&gt;5 - Mixed JSON: Flexible Values&lt;/FONT&gt;&lt;/STRONG&gt;" to the top of the script go ahead and load the data. We are going to start by previewing the data for the finished product and then work backwards to understand &lt;STRONG&gt;&lt;FONT color="#993300"&gt;how&lt;/FONT&gt;&lt;/STRONG&gt; it was accomplished. If you look at the preview screen you will notice something odd: You have the &lt;STRONG&gt;&lt;FONT color="#993300"&gt;Mixed_JSON&lt;/FONT&gt; &lt;/STRONG&gt;table that was built by the inline load part of the script, then you have a whole bunch of other tables. One for each of the &lt;STRONG&gt;&lt;FONT color="#993300"&gt;fields&lt;/FONT&gt; &lt;/STRONG&gt;that is part of the data.&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Section5PreviewAll.png" style="width: 298px;"&gt;&lt;img src="https://community.qlik.com/t5/image/serverpage/image-id/184738i1EF2D57DBFF7D152/image-size/large?v=v2&amp;amp;px=999" role="button" title="Section5PreviewAll.png" alt="Section5PreviewAll.png" /&gt;&lt;/span&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Go ahead and select the &lt;STRONG&gt;&lt;FONT color="#993300"&gt;Information_Flexible.bounty&lt;/FONT&gt;&lt;/STRONG&gt; table so you can preview what data is in that table.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Section5BountyPreview.png" style="width: 519px;"&gt;&lt;img src="https://community.qlik.com/t5/image/serverpage/image-id/184739i24426F3BB5DC2728/image-size/large?v=v2&amp;amp;px=999" role="button" title="Section5BountyPreview.png" alt="Section5BountyPreview.png" /&gt;&lt;/span&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;If you walk each of the tables you will notice that each table contains the value for that given field. If you look at the Data Model Viewer you will see that every table is associated based on the row number. Which means in any chart that you visualize you will easily be able to present the values for all of the fields.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="MixedDataModel.png" style="width: 931px;"&gt;&lt;img src="https://community.qlik.com/t5/image/serverpage/image-id/184740i3BBE893AB831BA78/image-size/large?v=v2&amp;amp;px=999" role="button" title="MixedDataModel.png" alt="MixedDataModel.png" /&gt;&lt;/span&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H2&gt;Add Data&lt;/H2&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;STRONG&gt;&lt;FONT color="#993300"&gt;Add&lt;/FONT&gt; &lt;/STRONG&gt;the following row of data to the inline load script, and then &lt;STRONG&gt;&lt;FONT color="#993300"&gt;reload&lt;/FONT&gt; &lt;/STRONG&gt;the data. Notice that it is brand new type and contains a value for a new field called &lt;STRONG&gt;&lt;FONT color="#993300"&gt;bowtie_color&lt;/FONT&gt;&lt;/STRONG&gt;, as well as values for two existing fields &lt;FONT color="#993300"&gt;&lt;STRONG&gt;text&lt;/STRONG&gt; &lt;/FONT&gt;and &lt;STRONG&gt;&lt;FONT color="#993300"&gt;bounty&lt;/FONT&gt;&lt;/STRONG&gt;.&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class="lia-indent-padding-left-30px"&gt;&lt;STRONG&gt;5, '{ "type": "dork_mail", "bowtie_color": "Qlik Green", "text" : "Qlik Dork is coming to town", "bounty": 1000000 }'&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;What do you know? Our application is indeed flexible and it has created a new table called &lt;STRONG&gt;&lt;FONT color="#993300"&gt;Information_Flexible:bowtie_color&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P class="lia-align-center"&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Dalton_Ruer_0-1762264629586.png" style="width: 400px;"&gt;&lt;img src="https://community.qlik.com/t5/image/serverpage/image-id/184741i7746BB3D063DD685/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Dalton_Ruer_0-1762264629586.png" alt="Dalton_Ruer_0-1762264629586.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Feel free to check out the values for it (as well as the values for the text and bounty tables) to see that indeed we have created structure from this unstructured heterogeneous JSON mess.&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;How&lt;/H2&gt;
&lt;P&gt;I tried my best to include comments in the load script which will hopefully aid in your learning. But I will admit sometimes it's hard to mentally walk through a script like this, even with comments, when there are multiple preceding loads like this. So, let's take this one step at a time and walk through what happens for each of the preceding load steps. To do this highlight rows 20-43 (from the Generic Load line until before Step1) and then comment those rows out and then reload the data.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Sedction5CodeComment.png" style="width: 999px;"&gt;&lt;img src="https://community.qlik.com/t5/image/serverpage/image-id/184749i1A122CB1DB953CFF/image-size/large?v=v2&amp;amp;px=999" role="button" title="Sedction5CodeComment.png" alt="Sedction5CodeComment.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If you look at the preview window now you will see that you have a single Information_Flexible table. As described in my comments, all step 1 did was to remove the &lt;STRONG&gt;&lt;FONT color="#993300"&gt;{ }&lt;/FONT&gt; &lt;/STRONG&gt;characters out of the JSON block and we simply have some &lt;STRONG&gt;&lt;FONT color="#993300"&gt;field:value&lt;/FONT&gt; &lt;/STRONG&gt;pairs.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Section5Step1.png" style="width: 620px;"&gt;&lt;img src="https://community.qlik.com/t5/image/serverpage/image-id/184750iD643D2D7E59D13A5/image-size/large?v=v2&amp;amp;px=999" role="button" title="Section5Step1.png" alt="Section5Step1.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Now uncomment lines 41-43 and reload the data so that we are running the first preceding load statement.&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Dalton_Ruer_1-1762265485451.png" style="width: 400px;"&gt;&lt;img src="https://community.qlik.com/t5/image/serverpage/image-id/184751i035E31C134CE871A/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Dalton_Ruer_1-1762265485451.png" alt="Dalton_Ruer_1-1762265485451.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;If you look at the preview for the &lt;STRONG&gt;&lt;FONT color="#993300"&gt;Information_Flexible&lt;/FONT&gt; &lt;/STRONG&gt;table you will see something interesting. We have multiple rows in the table for each of the original rows. As the comments indicated the &lt;FONT color="#993300"&gt;&lt;STRONG&gt;SubField()&lt;/STRONG&gt;&lt;/FONT&gt; function has done that. Each of our &lt;STRONG&gt;&lt;FONT color="#993300"&gt;field:value&lt;/FONT&gt;&lt;/STRONG&gt; pairs has been put into it's own row:&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Dalton_Ruer_2-1762265646024.png" style="width: 400px;"&gt;&lt;img src="https://community.qlik.com/t5/image/serverpage/image-id/184752i6646766C7DCC01F6/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Dalton_Ruer_2-1762265646024.png" alt="Dalton_Ruer_2-1762265646024.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;This is getting fun. So let's keep going. Now uncomment rows 31-34 and reload the data again.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Dalton_Ruer_3-1762265726708.png" style="width: 400px;"&gt;&lt;img src="https://community.qlik.com/t5/image/serverpage/image-id/184753iE02C67F39C612904/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Dalton_Ruer_3-1762265726708.png" alt="Dalton_Ruer_3-1762265726708.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;As you look at the preview again for the &lt;STRONG&gt;&lt;FONT color="#993300"&gt;Information_Flexible&lt;/FONT&gt; &lt;/STRONG&gt;table you will notice something cool. The &lt;FONT color="#993300"&gt;&lt;STRONG&gt;field:value&lt;/STRONG&gt;&lt;/FONT&gt; JSON pairs, have been turned into structured &lt;STRONG&gt;&lt;FONT color="#993300"&gt;Field&lt;/FONT&gt; &lt;/STRONG&gt;and &lt;STRONG&gt;&lt;FONT color="#993300"&gt;Value&lt;/FONT&gt; &lt;/STRONG&gt;fields.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Dalton_Ruer_5-1762265852511.png" style="width: 400px;"&gt;&lt;img src="https://community.qlik.com/t5/image/serverpage/image-id/184755i8947052DFFE13617/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Dalton_Ruer_5-1762265852511.png" alt="Dalton_Ruer_5-1762265852511.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;If we could created a table for each of the different Field values and store those Value values in it we would really be in business. Now I remember that's exactly what a &lt;A href="https://help.qlik.com/en-US/sense/May2025/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Generic.htm" target="_blank" rel="noopener"&gt;Generic Load&lt;/A&gt; does.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Go ahead an uncomment lines 20-24 so that we can once again reload the data, and this time return to our starting point.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Dalton_Ruer_6-1762266943918.png" style="width: 999px;"&gt;&lt;img src="https://community.qlik.com/t5/image/serverpage/image-id/184757iD49A698B681E83D6/image-size/large?v=v2&amp;amp;px=999" role="button" title="Dalton_Ruer_6-1762266943918.png" alt="Dalton_Ruer_6-1762266943918.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;H2&gt;Summary&lt;/H2&gt;
&lt;P&gt;Like many things I have written in the past ... this solution isn't really all that complicated, but understanding how multiple Qlik Sense load transformations work together can be. Hopefully, you now feel confident that you have an example load script that you can use to flexibly parse out any nasty JSON Heterogeneous data that those varmints throw at you. Plus you realize how easy you can make it for yourself to simply comment out preceding load steps so that you can get a picture of what is occurring each and every step of the way. After all, not everyone documents their code so thoroughly.&amp;nbsp;&lt;span class="lia-unicode-emoji" title=":cowboy_hat_face:"&gt;🤠&lt;/span&gt;&lt;/P&gt;
&lt;H2&gt;&lt;STRONG&gt;&lt;FONT color="#008000"&gt;Big Picture&lt;/FONT&gt;&amp;nbsp;&lt;/STRONG&gt;&lt;/H2&gt;
&lt;P&gt;This post is part of a series aimed at ensuring you have the tools needed to Tame with Wild West Data Frontier, I mean Tame the Wild JSON Data Frontier you may be facing.&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Posts:&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://%20https:/community.qlik.com/t5/Member-Articles/Parsing-Flat-JSON-Field-Value-Pairs/ta-p/2535096" target="_blank"&gt;Taming the Wild JSON Data Frontier&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://%20https:/community.qlik.com/t5/Member-Articles/Parsing-Flat-JSON-Field-Value-Pairs/ta-p/2535096" target="_blank"&gt;Parsing: Flat JSON - Field Value Pairs&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://community.qlik.com/t5/Member-Articles/Parsing-Nested-JSON-Objects/ta-p/2535112" target="_blank"&gt;Parsing: Nested JSON Objects&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://community.qlik.com/t5/Member-Articles/Parsing-JSON-Array-Homogeneous-Objects/ta-p/2535153" target="_blank"&gt;Parsing: JSON Array (Homogeneous Objects)&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://community.qlik.com/t5/Member-Articles/Parsing-Heterogeneous-Mixed-JSON-Objects-Fixed-Manner/ta-p/2535212" target="_blank"&gt;Parsing: Heterogeneous (Mixed) JSON Objects Fixed Manner&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://community.qlik.com/t5/Member-Articles/Parsing-Heterogeneous-Mixed-JSON-Objects-Flexible-Manner/ta-p/2535225" target="_blank"&gt;Parsing: Heterogeneous (Mixed) JSON Objects Flexible Manner &amp;lt;--- You are here&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://community.qlik.com/t5/Member-Articles/Parsing-Heterogeneous-Mixed-JSON-Arrays/ta-p/2535281" target="_blank" rel="noopener"&gt;&lt;STRONG&gt;Parsing: Heterogeneous (Mixed) JSON Arrays&lt;/STRONG&gt;&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&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;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Tue, 04 Nov 2025 17:35:31 GMT</pubDate>
    <dc:creator>Dalton_Ruer</dc:creator>
    <dc:date>2025-11-04T17:35:31Z</dc:date>
    <item>
      <title>Parsing: Heterogeneous (Mixed) JSON Objects Flexible Manner</title>
      <link>https://community.qlik.com/t5/Member-Articles/Parsing-Heterogeneous-Mixed-JSON-Objects-Flexible-Manner/ta-p/2535225</link>
      <description>&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="MixedJSON2.png" style="width: 312px;"&gt;&lt;img src="https://community.qlik.com/t5/image/serverpage/image-id/184734i2755A4FC6FF4974D/image-size/large?v=v2&amp;amp;px=999" role="button" title="MixedJSON2.png" alt="MixedJSON2.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;As you look at the image above you will notice multiple JSON objects. In the previous post&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;A href="https://community.qlik.com/t5/Member-Articles/Parsing-Heterogeneous-Mixed-JSON-Objects-Fixed-Manner/ta-p/2535212" target="_blank" rel="noopener"&gt;Parsing: Heterogeneous (Mixed) JSON Objects Fixed Manner&lt;/A&gt; we walked through how we could easily handle this type of data in a fixed way. &lt;STRONG&gt;&lt;EM&gt;All you need to do is know every single field:value pair that will ever come to you.&amp;nbsp;&lt;/EM&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H2&gt;&lt;SPAN&gt;Flexibility&lt;/SPAN&gt;&lt;/H2&gt;
&lt;P&gt;&lt;SPAN&gt;If you haven't already read that previous post be sure to do so and go through the practice. You need to understand that while easy to maintain for new fields that come across ... the thought of knowing every single field:value pair that will ever come to you is kind of daunting. Right?&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;I kind of slipped it in there but:&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;SPAN&gt;You know that you can't see over the horizon to know which bandits are heading to your town.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN&gt;You also know that while the job security is great, constantly being behind and having to rush to identify the new bandits can cause a lot of stress.&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN&gt;This post will walk you through the same data that we dealt with in the previous post, but will allow you to read all of the values for all fields that exist now, and those that might come riding in to town tomorrow. &lt;/SPAN&gt;&lt;/P&gt;
&lt;H2&gt;&lt;SPAN&gt;Practice&lt;/SPAN&gt;&lt;/H2&gt;
&lt;P&gt;&lt;SPAN&gt;If you haven't already done so for a previous post, go ahead and download the &lt;STRONG&gt;&lt;FONT color="#993300"&gt;WildDataFrontier.qvf&lt;/FONT&gt;&lt;/STRONG&gt; that is attached, uploaded it to your environment and open the load script.&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Section5.png" style="width: 239px;"&gt;&lt;img src="https://community.qlik.com/t5/image/serverpage/image-id/184736iFD30D1E66EE41148/image-size/large?v=v2&amp;amp;px=999" role="button" title="Section5.png" alt="Section5.png" /&gt;&lt;/span&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;{ Notice there are multiple sections. Each of them will pertain to a separate article and for this article the section named "&lt;STRONG&gt;&lt;FONT color="#993300"&gt;5 - Mixed JSON: Flexible Values&lt;/FONT&gt;&lt;/STRONG&gt;" is the one you want to have at the top of your script for this post. }&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Section5Load.png" style="width: 657px;"&gt;&lt;img src="https://community.qlik.com/t5/image/serverpage/image-id/184737i93B4318E86C523EB/image-size/large?v=v2&amp;amp;px=999" role="button" title="Section5Load.png" alt="Section5Load.png" /&gt;&lt;/span&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Same basic data as the previous post, but I've also included the 4'th row of data that I asked you to do as part of the practice. The flexibility that you need as a data sheriff in this JSON Wild Data Frontier is going to be handled by the incredible flexibility available to you in how Qlik Sense can load and transform that data.&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&gt;In previous posts we've simply done a resident load to transform the data directly in 1 step using that ever so flexible JsonGet() function. In this post our transformation is going to do a few things that may be new to you. Be sure to click the links for each to get at least an introduction to them:&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/load-data-from-previously-loaded-table.htm" target="_blank" rel="noopener"&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;Preceding Load&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://help.qlik.com/en-US/sense/May2025/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Generic.htm" target="_blank" rel="noopener"&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;Generic Load&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;H2&gt;Working backwards&lt;/H2&gt;
&lt;P&gt;Once you have the application open and have moved section&amp;nbsp;&lt;SPAN&gt;"&lt;STRONG&gt;&lt;FONT color="#993300"&gt;5 - Mixed JSON: Flexible Values&lt;/FONT&gt;&lt;/STRONG&gt;" to the top of the script go ahead and load the data. We are going to start by previewing the data for the finished product and then work backwards to understand &lt;STRONG&gt;&lt;FONT color="#993300"&gt;how&lt;/FONT&gt;&lt;/STRONG&gt; it was accomplished. If you look at the preview screen you will notice something odd: You have the &lt;STRONG&gt;&lt;FONT color="#993300"&gt;Mixed_JSON&lt;/FONT&gt; &lt;/STRONG&gt;table that was built by the inline load part of the script, then you have a whole bunch of other tables. One for each of the &lt;STRONG&gt;&lt;FONT color="#993300"&gt;fields&lt;/FONT&gt; &lt;/STRONG&gt;that is part of the data.&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Section5PreviewAll.png" style="width: 298px;"&gt;&lt;img src="https://community.qlik.com/t5/image/serverpage/image-id/184738i1EF2D57DBFF7D152/image-size/large?v=v2&amp;amp;px=999" role="button" title="Section5PreviewAll.png" alt="Section5PreviewAll.png" /&gt;&lt;/span&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Go ahead and select the &lt;STRONG&gt;&lt;FONT color="#993300"&gt;Information_Flexible.bounty&lt;/FONT&gt;&lt;/STRONG&gt; table so you can preview what data is in that table.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Section5BountyPreview.png" style="width: 519px;"&gt;&lt;img src="https://community.qlik.com/t5/image/serverpage/image-id/184739i24426F3BB5DC2728/image-size/large?v=v2&amp;amp;px=999" role="button" title="Section5BountyPreview.png" alt="Section5BountyPreview.png" /&gt;&lt;/span&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;If you walk each of the tables you will notice that each table contains the value for that given field. If you look at the Data Model Viewer you will see that every table is associated based on the row number. Which means in any chart that you visualize you will easily be able to present the values for all of the fields.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="MixedDataModel.png" style="width: 931px;"&gt;&lt;img src="https://community.qlik.com/t5/image/serverpage/image-id/184740i3BBE893AB831BA78/image-size/large?v=v2&amp;amp;px=999" role="button" title="MixedDataModel.png" alt="MixedDataModel.png" /&gt;&lt;/span&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H2&gt;Add Data&lt;/H2&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;STRONG&gt;&lt;FONT color="#993300"&gt;Add&lt;/FONT&gt; &lt;/STRONG&gt;the following row of data to the inline load script, and then &lt;STRONG&gt;&lt;FONT color="#993300"&gt;reload&lt;/FONT&gt; &lt;/STRONG&gt;the data. Notice that it is brand new type and contains a value for a new field called &lt;STRONG&gt;&lt;FONT color="#993300"&gt;bowtie_color&lt;/FONT&gt;&lt;/STRONG&gt;, as well as values for two existing fields &lt;FONT color="#993300"&gt;&lt;STRONG&gt;text&lt;/STRONG&gt; &lt;/FONT&gt;and &lt;STRONG&gt;&lt;FONT color="#993300"&gt;bounty&lt;/FONT&gt;&lt;/STRONG&gt;.&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class="lia-indent-padding-left-30px"&gt;&lt;STRONG&gt;5, '{ "type": "dork_mail", "bowtie_color": "Qlik Green", "text" : "Qlik Dork is coming to town", "bounty": 1000000 }'&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;What do you know? Our application is indeed flexible and it has created a new table called &lt;STRONG&gt;&lt;FONT color="#993300"&gt;Information_Flexible:bowtie_color&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P class="lia-align-center"&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Dalton_Ruer_0-1762264629586.png" style="width: 400px;"&gt;&lt;img src="https://community.qlik.com/t5/image/serverpage/image-id/184741i7746BB3D063DD685/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Dalton_Ruer_0-1762264629586.png" alt="Dalton_Ruer_0-1762264629586.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Feel free to check out the values for it (as well as the values for the text and bounty tables) to see that indeed we have created structure from this unstructured heterogeneous JSON mess.&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;How&lt;/H2&gt;
&lt;P&gt;I tried my best to include comments in the load script which will hopefully aid in your learning. But I will admit sometimes it's hard to mentally walk through a script like this, even with comments, when there are multiple preceding loads like this. So, let's take this one step at a time and walk through what happens for each of the preceding load steps. To do this highlight rows 20-43 (from the Generic Load line until before Step1) and then comment those rows out and then reload the data.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Sedction5CodeComment.png" style="width: 999px;"&gt;&lt;img src="https://community.qlik.com/t5/image/serverpage/image-id/184749i1A122CB1DB953CFF/image-size/large?v=v2&amp;amp;px=999" role="button" title="Sedction5CodeComment.png" alt="Sedction5CodeComment.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If you look at the preview window now you will see that you have a single Information_Flexible table. As described in my comments, all step 1 did was to remove the &lt;STRONG&gt;&lt;FONT color="#993300"&gt;{ }&lt;/FONT&gt; &lt;/STRONG&gt;characters out of the JSON block and we simply have some &lt;STRONG&gt;&lt;FONT color="#993300"&gt;field:value&lt;/FONT&gt; &lt;/STRONG&gt;pairs.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Section5Step1.png" style="width: 620px;"&gt;&lt;img src="https://community.qlik.com/t5/image/serverpage/image-id/184750iD643D2D7E59D13A5/image-size/large?v=v2&amp;amp;px=999" role="button" title="Section5Step1.png" alt="Section5Step1.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Now uncomment lines 41-43 and reload the data so that we are running the first preceding load statement.&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Dalton_Ruer_1-1762265485451.png" style="width: 400px;"&gt;&lt;img src="https://community.qlik.com/t5/image/serverpage/image-id/184751i035E31C134CE871A/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Dalton_Ruer_1-1762265485451.png" alt="Dalton_Ruer_1-1762265485451.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;If you look at the preview for the &lt;STRONG&gt;&lt;FONT color="#993300"&gt;Information_Flexible&lt;/FONT&gt; &lt;/STRONG&gt;table you will see something interesting. We have multiple rows in the table for each of the original rows. As the comments indicated the &lt;FONT color="#993300"&gt;&lt;STRONG&gt;SubField()&lt;/STRONG&gt;&lt;/FONT&gt; function has done that. Each of our &lt;STRONG&gt;&lt;FONT color="#993300"&gt;field:value&lt;/FONT&gt;&lt;/STRONG&gt; pairs has been put into it's own row:&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Dalton_Ruer_2-1762265646024.png" style="width: 400px;"&gt;&lt;img src="https://community.qlik.com/t5/image/serverpage/image-id/184752i6646766C7DCC01F6/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Dalton_Ruer_2-1762265646024.png" alt="Dalton_Ruer_2-1762265646024.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;This is getting fun. So let's keep going. Now uncomment rows 31-34 and reload the data again.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Dalton_Ruer_3-1762265726708.png" style="width: 400px;"&gt;&lt;img src="https://community.qlik.com/t5/image/serverpage/image-id/184753iE02C67F39C612904/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Dalton_Ruer_3-1762265726708.png" alt="Dalton_Ruer_3-1762265726708.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;As you look at the preview again for the &lt;STRONG&gt;&lt;FONT color="#993300"&gt;Information_Flexible&lt;/FONT&gt; &lt;/STRONG&gt;table you will notice something cool. The &lt;FONT color="#993300"&gt;&lt;STRONG&gt;field:value&lt;/STRONG&gt;&lt;/FONT&gt; JSON pairs, have been turned into structured &lt;STRONG&gt;&lt;FONT color="#993300"&gt;Field&lt;/FONT&gt; &lt;/STRONG&gt;and &lt;STRONG&gt;&lt;FONT color="#993300"&gt;Value&lt;/FONT&gt; &lt;/STRONG&gt;fields.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Dalton_Ruer_5-1762265852511.png" style="width: 400px;"&gt;&lt;img src="https://community.qlik.com/t5/image/serverpage/image-id/184755i8947052DFFE13617/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Dalton_Ruer_5-1762265852511.png" alt="Dalton_Ruer_5-1762265852511.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;If we could created a table for each of the different Field values and store those Value values in it we would really be in business. Now I remember that's exactly what a &lt;A href="https://help.qlik.com/en-US/sense/May2025/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Generic.htm" target="_blank" rel="noopener"&gt;Generic Load&lt;/A&gt; does.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Go ahead an uncomment lines 20-24 so that we can once again reload the data, and this time return to our starting point.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Dalton_Ruer_6-1762266943918.png" style="width: 999px;"&gt;&lt;img src="https://community.qlik.com/t5/image/serverpage/image-id/184757iD49A698B681E83D6/image-size/large?v=v2&amp;amp;px=999" role="button" title="Dalton_Ruer_6-1762266943918.png" alt="Dalton_Ruer_6-1762266943918.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;H2&gt;Summary&lt;/H2&gt;
&lt;P&gt;Like many things I have written in the past ... this solution isn't really all that complicated, but understanding how multiple Qlik Sense load transformations work together can be. Hopefully, you now feel confident that you have an example load script that you can use to flexibly parse out any nasty JSON Heterogeneous data that those varmints throw at you. Plus you realize how easy you can make it for yourself to simply comment out preceding load steps so that you can get a picture of what is occurring each and every step of the way. After all, not everyone documents their code so thoroughly.&amp;nbsp;&lt;span class="lia-unicode-emoji" title=":cowboy_hat_face:"&gt;🤠&lt;/span&gt;&lt;/P&gt;
&lt;H2&gt;&lt;STRONG&gt;&lt;FONT color="#008000"&gt;Big Picture&lt;/FONT&gt;&amp;nbsp;&lt;/STRONG&gt;&lt;/H2&gt;
&lt;P&gt;This post is part of a series aimed at ensuring you have the tools needed to Tame with Wild West Data Frontier, I mean Tame the Wild JSON Data Frontier you may be facing.&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Posts:&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://%20https:/community.qlik.com/t5/Member-Articles/Parsing-Flat-JSON-Field-Value-Pairs/ta-p/2535096" target="_blank"&gt;Taming the Wild JSON Data Frontier&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://%20https:/community.qlik.com/t5/Member-Articles/Parsing-Flat-JSON-Field-Value-Pairs/ta-p/2535096" target="_blank"&gt;Parsing: Flat JSON - Field Value Pairs&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://community.qlik.com/t5/Member-Articles/Parsing-Nested-JSON-Objects/ta-p/2535112" target="_blank"&gt;Parsing: Nested JSON Objects&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://community.qlik.com/t5/Member-Articles/Parsing-JSON-Array-Homogeneous-Objects/ta-p/2535153" target="_blank"&gt;Parsing: JSON Array (Homogeneous Objects)&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://community.qlik.com/t5/Member-Articles/Parsing-Heterogeneous-Mixed-JSON-Objects-Fixed-Manner/ta-p/2535212" target="_blank"&gt;Parsing: Heterogeneous (Mixed) JSON Objects Fixed Manner&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://community.qlik.com/t5/Member-Articles/Parsing-Heterogeneous-Mixed-JSON-Objects-Flexible-Manner/ta-p/2535225" target="_blank"&gt;Parsing: Heterogeneous (Mixed) JSON Objects Flexible Manner &amp;lt;--- You are here&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://community.qlik.com/t5/Member-Articles/Parsing-Heterogeneous-Mixed-JSON-Arrays/ta-p/2535281" target="_blank" rel="noopener"&gt;&lt;STRONG&gt;Parsing: Heterogeneous (Mixed) JSON Arrays&lt;/STRONG&gt;&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&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;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 04 Nov 2025 17:35:31 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Member-Articles/Parsing-Heterogeneous-Mixed-JSON-Objects-Flexible-Manner/ta-p/2535225</guid>
      <dc:creator>Dalton_Ruer</dc:creator>
      <dc:date>2025-11-04T17:35:31Z</dc:date>
    </item>
  </channel>
</rss>

