# JSON Bound Data List Viewer - No More Cloning!

**URL:** https://community.thunkable.com/t/json-bound-data-list-viewer-no-more-cloning/1041807
**Category:** Questions about Thunkable X
**Tags:** json
**Created:** [December 27, 2020, 3:08pm UTC](https://community.thunkable.com/t/json-bound-data-list-viewer-no-more-cloning/1041807 "2020-12-27T15:08:08Z")
**Posts on this page:** 20
**Page:** 1

<div class="post-metadata">

### Author: ![drted](https://sea1.discourse-cdn.com/flex015/user_avatar/community.thunkable.com/drted/32/92694_2.png) [@drted](https://community.thunkable.com/u/drted)
#### Post date: [December 27, 2020, 3:08pm UTC](https://community.thunkable.com/t/json-bound-data-list-viewer-no-more-cloning/1041807/1 "2020-12-27T15:08:08Z")

</div>

If you have been thunking for a while, you may have learned a few things:

1. Data List Viewers and Data Grid Viewers are easy to design and execute quickly on devices
2. Data List Viewer and Data Grid Viewer components cannot be bound to JSON
3. All sorts of Web APIs and Firebase RealtimeDB (aka cloud variables) use JSON
4. Airtable and Google Sheet data sources are generally slower and less reliable than Firebase/Cloud Variables
5. Creating or cloning components for JSON lists are progressively slower and are largely unuseable after 20-40 components

I wanted the best of both worlds:

1. Speed and reliability of JSON
2. Speed and reliability of Data List Viewers

And behold, a Christmas miracle: the JSON Bound Data List Viewer! 🥳

**The Blocks**

 ![image](https://us1.discourse-cdn.com/flex015/uploads/thunkable/original/3X/5/7/572a23783bd05d93177b2194aa58474825d62e44.png)

**The Discussion**  
When creating the Data List Viewer (or Grid) click the Add button and scroll past the existing data sources a click the Add New button. From the available options, select “Create Your Own Table.” This will create a local DB that is not connected to anything external source (Airtable or Google Sheets).

The magic happens in the fill button. I set the APP variable LocalJSONHolder to a JSON list. Then for each object in the list, create a new row in the data list viewer local data source (JSONConverter). _Adding the waiting blocks is critical, otherwise you can get unpredicable results._ That’s it!

 ![image](https://us1.discourse-cdn.com/flex015/uploads/thunkable/original/3X/a/d/ad61811713c1028c6a24b115697445ac7c64ce02.png)

_In this demonstration, I created a simple JSON object list. This could be substituted for any RealtimeDB, cloud variable, or JSON WebAPI response._

**The Display**  
You can use the same technique for both the data list and data grid viewers (list on left, grid on right)

 ![20201227_070502](https://us1.discourse-cdn.com/flex015/uploads/thunkable/original/3X/a/5/a5f2acc3fa67238509de3a1ba44efa54c6a57657.gif) ![Screenshot_20201227-072202_Thunkable](https://us1.discourse-cdn.com/flex015/uploads/thunkable/original/3X/5/c/5c81357861d53c27196e6efdbb4ccaf92c1c8425.jpeg)

**The Project**  
[https://x.thunkable.com/copy/8be008e87a0e0ed5984b9d1e417b4200](https://x.thunkable.com/copy/8be008e87a0e0ed5984b9d1e417b4200)

---

<div class="post-metadata">

### Author: ![flashag](https://avatars.discourse-cdn.com/v4/letter/f/4bbf92/32.png) [@flashag](https://community.thunkable.com/u/flashag)
#### Post date: [December 28, 2020, 11:51am UTC](https://community.thunkable.com/t/json-bound-data-list-viewer-no-more-cloning/1041807/2 "2020-12-28T11:51:48Z")

</div>

O  
M  
G  
!!!  
This is what I need!! Finally! It’s really a miracle! I’ll definitely try it in [my project](http://community.thunkable.com/t/tv-tracker-using-api-and-firebase-db/1041691) because I use API and firebase db and apply the cloning method to create lists and I think it works slow and unusable. Thank you, Santa!!

---

<div class="post-metadata">

### Author: ![Deluxe](https://sea1.discourse-cdn.com/flex015/user_avatar/community.thunkable.com/deluxe/32/30016_2.png) [@Deluxe](https://community.thunkable.com/u/Deluxe)
#### Post date: [December 28, 2020, 2:19pm UTC](https://community.thunkable.com/t/json-bound-data-list-viewer-no-more-cloning/1041807/3 "2020-12-28T14:19:23Z")

</div>

I just want to thank you for sharing this approach. I just updated my DeluxeTube player tech-demo by replacing the legacy list with data list viewers and it already looks so much better! Check it out here: [http://community.thunkable.com/t/deluxetube-a-youtube-video-player-tech-demo/](http://community.thunkable.com/t/deluxetube-a-youtube-video-player-tech-demo/)

---

<div class="post-metadata">

### Author: ![drted](https://sea1.discourse-cdn.com/flex015/user_avatar/community.thunkable.com/drted/32/92694_2.png) [@drted](https://community.thunkable.com/u/drted)
#### Post date: [December 28, 2020, 2:52pm UTC](https://community.thunkable.com/t/json-bound-data-list-viewer-no-more-cloning/1041807/4 "2020-12-28T14:52:35Z")

</div>

Glad to hear it!

---

<div class="post-metadata">

### Author: ![tmurachpx](https://avatars.discourse-cdn.com/v4/letter/t/c68b51/32.png) [@tmurachpx](https://community.thunkable.com/u/tmurachpx)
#### Post date: [December 30, 2020, 12:17pm UTC](https://community.thunkable.com/t/json-bound-data-list-viewer-no-more-cloning/1041807/5 "2020-12-30T12:17:08Z")

</div>

First: Thank your very much! This is really helpful. I already gave up on using the new data view components as iam using external json.

I got it to work with a webApi and on desktop it looks good. On my android device in preview it does produce some problems. As iam trying to solve them, could you please elaborate on the “Waiting” block? I could not figure out what kind of variable or component it is. It used an app variable for it, but maybe thats wrong.

Thanks alot!

---

<div class="post-metadata">

### Author: ![drted](https://sea1.discourse-cdn.com/flex015/user_avatar/community.thunkable.com/drted/32/92694_2.png) [@drted](https://community.thunkable.com/u/drted)
#### Post date: [December 30, 2020, 1:09pm UTC](https://community.thunkable.com/t/json-bound-data-list-viewer-no-more-cloning/1041807/6 "2020-12-30T13:09:48Z")

</div>

@ tmurachpx,  
The waiting block was created by defining a loop and renaming the variable. It effectively creates a “SCREEN” level variable.

---

<div class="post-metadata">

### Author: ![tmurachpx](https://avatars.discourse-cdn.com/v4/letter/t/c68b51/32.png) [@tmurachpx](https://community.thunkable.com/u/tmurachpx)
#### Post date: [December 30, 2020, 1:43pm UTC](https://community.thunkable.com/t/json-bound-data-list-viewer-no-more-cloning/1041807/7 "2020-12-30T13:43:15Z")

</div>

Thanks for the quick answer. Iam sorry, Iam new to thunkable. Which component creates a loop? I can’t find it

---

<div class="post-metadata">

### Author: ![drted](https://sea1.discourse-cdn.com/flex015/user_avatar/community.thunkable.com/drted/32/92694_2.png) [@drted](https://community.thunkable.com/u/drted)
#### Post date: [December 30, 2020, 1:54pm UTC](https://community.thunkable.com/t/json-bound-data-list-viewer-no-more-cloning/1041807/8 "2020-12-30T13:54:14Z")

</div>

I create the Waiting variable with the COUNT WITH block. After creating the variable, you can delete the COUNT WITH block.  
 ![image](https://us1.discourse-cdn.com/flex015/uploads/thunkable/original/3X/8/9/894cbaaa2ebaeb1e40f98498f9227d96346cbde2.png)

---

<div class="post-metadata">

### Author: ![kartik14](https://sea1.discourse-cdn.com/flex015/user_avatar/community.thunkable.com/kartik14/32/44782_2.png) [@kartik14](https://community.thunkable.com/u/kartik14)
#### Post date: [January 8, 2021, 5:36am UTC](https://community.thunkable.com/t/json-bound-data-list-viewer-no-more-cloning/1041807/10 "2021-01-08T05:36:05Z")

</div>

Hi, @drted! Thank you for referring your post to [my question](http://community.thunkable.com/t/1042283)…

I would like to know how would I incorporate a search option with this idea - can you shine some light? I am a bit confused…

Thanks!

---

<div class="post-metadata">

### Author: ![bon.sosnowiczaninfi4](https://sea1.discourse-cdn.com/flex015/user_avatar/community.thunkable.com/bon.sosnowiczaninfi4/32/120125_2.png) [@bon.sosnowiczaninfi4](https://community.thunkable.com/u/bon.sosnowiczaninfi4)
#### Post date: [November 3, 2021, 6:29am UTC](https://community.thunkable.com/t/json-bound-data-list-viewer-no-more-cloning/1041807/11 "2021-11-03T06:29:32Z")

</div>

Hi!

I try your idea with firebase, but I’m missing something.  
App crashes at this point.

 ![blocks](https://us1.discourse-cdn.com/flex015/uploads/thunkable/original/3X/9/9/99550c736158d6f29733781bf0f7d8cfa62b2f9a.jpeg)

![firebase](https://us1.discourse-cdn.com/flex015/uploads/thunkable/original/3X/b/f/bf303fc76252a7859cfb18e82181a7573cceeafb.jpeg)

---

<div class="post-metadata">

### Author: ![muneer](https://sea1.discourse-cdn.com/flex015/user_avatar/community.thunkable.com/muneer/32/75210_2.png) [@muneer](https://community.thunkable.com/u/muneer)
#### Post date: [November 3, 2021, 9:25am UTC](https://community.thunkable.com/t/json-bound-data-list-viewer-no-more-cloning/1041807/12 "2021-11-03T09:25:02Z")

</div>

This is not an object this is why it fails  
 ![image](https://us1.discourse-cdn.com/flex015/uploads/thunkable/original/3X/9/8/989a938701291fe473f3fe56b167e910ebc1d38b.png)

---

<div class="post-metadata">

### Author: ![bon.sosnowiczaninfi4](https://sea1.discourse-cdn.com/flex015/user_avatar/community.thunkable.com/bon.sosnowiczaninfi4/32/120125_2.png) [@bon.sosnowiczaninfi4](https://community.thunkable.com/u/bon.sosnowiczaninfi4)
#### Post date: [November 3, 2021, 9:28am UTC](https://community.thunkable.com/t/json-bound-data-list-viewer-no-more-cloning/1041807/13 "2021-11-03T09:28:29Z")

</div>

I changed all pink to text 1234 and still not working.

---

<div class="post-metadata">

### Author: ![bon.sosnowiczaninfi4](https://sea1.discourse-cdn.com/flex015/user_avatar/community.thunkable.com/bon.sosnowiczaninfi4/32/120125_2.png) [@bon.sosnowiczaninfi4](https://community.thunkable.com/u/bon.sosnowiczaninfi4)
#### Post date: [November 3, 2021, 9:49am UTC](https://community.thunkable.com/t/json-bound-data-list-viewer-no-more-cloning/1041807/15 "2021-11-03T09:49:26Z")

</div>

![block-with-dbget](https://us1.discourse-cdn.com/flex015/uploads/thunkable/original/3X/6/f/6f8f332ed2694c5bcf13e884ab324cb56f5c1688.jpeg)

another version, same db structure.

‘no data’.

---

<div class="post-metadata">

### Author: ![mimostel](https://sea1.discourse-cdn.com/flex015/user_avatar/community.thunkable.com/mimostel/32/107661_2.png) [@mimostel](https://community.thunkable.com/u/mimostel)
#### Post date: [November 3, 2021, 9:53am UTC](https://community.thunkable.com/t/json-bound-data-list-viewer-no-more-cloning/1041807/16 "2021-11-03T09:53:47Z")

</div>

Why do you use that “cloud variable” ?  
Try “set stored variable MO\_dawne to value” directly… whats the point of that cloud ?

---

<div class="post-metadata">

### Author: ![bon.sosnowiczaninfi4](https://sea1.discourse-cdn.com/flex015/user_avatar/community.thunkable.com/bon.sosnowiczaninfi4/32/120125_2.png) [@bon.sosnowiczaninfi4](https://community.thunkable.com/u/bon.sosnowiczaninfi4)
#### Post date: [November 3, 2021, 10:08am UTC](https://community.thunkable.com/t/json-bound-data-list-viewer-no-more-cloning/1041807/17 "2021-11-03T10:08:00Z")

</div>

right. I returned to cloud variable.

I now have it almost working. It just crushes when gray block are added. :]

 ![wersja3](https://us1.discourse-cdn.com/flex015/uploads/thunkable/original/3X/a/a/aa6821907e3df77cdf8e06b39b505bd76decf1ad.jpeg)

 ![2021-11-03](https://us1.discourse-cdn.com/flex015/uploads/thunkable/original/3X/c/2/c2a71174381a1842443145b7acdde6574b52bf96.jpeg)

---

<div class="post-metadata">

### Author: ![mimostel](https://sea1.discourse-cdn.com/flex015/user_avatar/community.thunkable.com/mimostel/32/107661_2.png) [@mimostel](https://community.thunkable.com/u/mimostel)
#### Post date: [November 3, 2021, 10:09am UTC](https://community.thunkable.com/t/json-bound-data-list-viewer-no-more-cloning/1041807/18 "2021-11-03T10:09:27Z")

</div>

just like @muneer already said, that is not an object. working on an example right now for you.

---

<div class="post-metadata">

### Author: ![mimostel](https://sea1.discourse-cdn.com/flex015/user_avatar/community.thunkable.com/mimostel/32/107661_2.png) [@mimostel](https://community.thunkable.com/u/mimostel)
#### Post date: [November 3, 2021, 10:28am UTC](https://community.thunkable.com/t/json-bound-data-list-viewer-no-more-cloning/1041807/19 "2021-11-03T10:28:51Z")

</div>

![screen](https://us1.discourse-cdn.com/flex015/uploads/thunkable/original/3X/0/7/0781ee711420b19582f7bd66b897aee0073dd828.png)

---

<div class="post-metadata">

### Author: ![bon.sosnowiczaninfi4](https://sea1.discourse-cdn.com/flex015/user_avatar/community.thunkable.com/bon.sosnowiczaninfi4/32/120125_2.png) [@bon.sosnowiczaninfi4](https://community.thunkable.com/u/bon.sosnowiczaninfi4)
#### Post date: [November 3, 2021, 10:38am UTC](https://community.thunkable.com/t/json-bound-data-list-viewer-no-more-cloning/1041807/20 "2021-11-03T10:38:34Z")

</div>

Ok, but that was the point, to eliminate numerous get db pings, reduce it to one chunk (JSON?) and then get all needed values.

---

<div class="post-metadata">

### Author: ![mimostel](https://sea1.discourse-cdn.com/flex015/user_avatar/community.thunkable.com/mimostel/32/107661_2.png) [@mimostel](https://community.thunkable.com/u/mimostel)
#### Post date: [November 3, 2021, 10:44am UTC](https://community.thunkable.com/t/json-bound-data-list-viewer-no-more-cloning/1041807/21 "2021-11-03T10:44:37Z")

</div>

I was thinking your way…  
On the other hand, you just can call Get once, with key user\_id/MO, and put value into a variable  
This way you get an object with all values in it, then refer to this object`s properties as needed like get object properties of/get object properties of (as many layers as you need to get to that you needed  
(have some stuffs to do right now, but ill provide an example as soon as i can)

---

<div class="post-metadata">

### Author: ![mimostel](https://sea1.discourse-cdn.com/flex015/user_avatar/community.thunkable.com/mimostel/32/107661_2.png) [@mimostel](https://community.thunkable.com/u/mimostel)
#### Post date: [November 3, 2021, 11:02am UTC](https://community.thunkable.com/t/json-bound-data-list-viewer-no-more-cloning/1041807/22 "2021-11-03T11:02:49Z")

</div>

![screen](https://us1.discourse-cdn.com/flex015/uploads/thunkable/original/3X/e/7/e7d96e81dbe8ceb6d32eabeea985b8d55153581b.png)

[Next page](https://community.thunkable.com/t/json-bound-data-list-viewer-no-more-cloning/1041807.md?page=2)
