# Looping over JSON after receiving it

**URL:** <https://forums.fusetools.com/t/looping-over-json-after-receiving-it/2218>\
**Category:** How-to Discussions\
**Created:** [September 2, 2015, 12:18pm UTC](https://forums.fusetools.com/t/looping-over-json-after-receiving-it/2218 "2015-09-02T12:18:52Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![Rob](https://avatars.discourse-cdn.com/v4/letter/r/838e76/32.png) [@Rob](https://forums.fusetools.com/u/Rob)\
**Post date:** [September 2, 2015, 12:18pm UTC](https://forums.fusetools.com/t/looping-over-json-after-receiving-it/2218/1 "2015-09-02T12:18:52Z")

</div>

I have a JSON packet, which has an object, which then has an array. I want to loop over that, in standard JS this would be easy enough, how do I go about achieving it here?

I’m using FetchJson which returns an Observerable object, so I’m accessing it via “value”, I don’t know if this is correct.

for (var i = 1; i\<data.value.heroes.length; i++) { debug\_log(i); }

The error is a type error, “undefined cannot be converted into an object”

Here is my JSON: [http://noms.me.uk/heroes.json](http://noms.me.uk/heroes.json)

Cheers

---

<div class="post-metadata">

**Author:** ![Anders\_Lassen](https://yyz1.discourse-cdn.com/flex035/user_avatar/forums.fusetools.com/anders_lassen/32/522_2.png) [@Anders\_Lassen](https://forums.fusetools.com/u/Anders_Lassen)\
**Post date:** [September 2, 2015, 12:25pm UTC](https://forums.fusetools.com/t/looping-over-json-after-receiving-it/2218/2 "2015-09-02T12:25:40Z")

</div>

Hi!

`FetchJson` is asynchronous, so the `value` will not be available immediately. It is only meant for reactive programming, with operators such as `.map()` and then databinding the result.

If the result is not databound, the fetch will not be performed.

If you want to write imparative code in response to a HTTP request in Fuse, you can do it the “standard JS” way, with `XMLHttpRequest` instead 🙂

---

<div class="post-metadata">

**Author:** ![Anders\_Lassen](https://yyz1.discourse-cdn.com/flex035/user_avatar/forums.fusetools.com/anders_lassen/32/522_2.png) [@Anders\_Lassen](https://forums.fusetools.com/u/Anders_Lassen)\
**Post date:** [September 2, 2015, 12:26pm UTC](https://forums.fusetools.com/t/looping-over-json-after-receiving-it/2218/3 "2015-09-02T12:26:27Z")

</div>

PS: The even more convenient `fetch(url).then(..` API is also on the way in a near future release 🙂

---

<div class="post-metadata">

**Author:** ![Rob](https://avatars.discourse-cdn.com/v4/letter/r/838e76/32.png) [@Rob](https://forums.fusetools.com/u/Rob)\
**Post date:** [September 2, 2015, 12:47pm UTC](https://forums.fusetools.com/t/looping-over-json-after-receiving-it/2218/4 "2015-09-02T12:47:11Z")

</div>

Hey,

So if I wrap my for loop inside the addSubscriber method would this be a viable way of doing it?

Loving the product so far, very quick for prototyping, trying to get my head around this data binding stuff

---

<div class="post-metadata">

**Author:** ![Rob](https://avatars.discourse-cdn.com/v4/letter/r/838e76/32.png) [@Rob](https://forums.fusetools.com/u/Rob)\
**Post date:** [September 2, 2015, 12:52pm UTC](https://forums.fusetools.com/t/looping-over-json-after-receiving-it/2218/5 "2015-09-02T12:52:26Z")

</div>

One more thing - is there any other way apart from debug\_log to log an object? It just comes back as JurrassicObject

Thanks!

---

<div class="post-metadata">

**Author:** ![Kristian\_Hasselknipp](https://yyz1.discourse-cdn.com/flex035/user_avatar/forums.fusetools.com/kristian_hasselknipp/32/549_2.png) [@Kristian\_Hasselknipp](https://forums.fusetools.com/u/Kristian_Hasselknipp)\
**Post date:** [September 2, 2015, 12:54pm UTC](https://forums.fusetools.com/t/looping-over-json-after-receiving-it/2218/6 "2015-09-02T12:54:03Z")

</div>

You can do `debug_log(JSON.stringify(yourObj))`

---

<div class="post-metadata">

**Author:** ![Rob](https://avatars.discourse-cdn.com/v4/letter/r/838e76/32.png) [@Rob](https://forums.fusetools.com/u/Rob)\
**Post date:** [September 2, 2015, 1:03pm UTC](https://forums.fusetools.com/t/looping-over-json-after-receiving-it/2218/7 "2015-09-02T13:03:59Z")

</div>

That’s great thanks - so if I can JSON.stringify an object, why can’t I JSON.parse it?

```auto
      var parsed = JSON.parse(data.value);

```

Compile error of "unexpected keywork ‘undefined’ at line 0?

---

<div class="post-metadata">

**Author:** ![Anders\_Bondehagen](https://yyz1.discourse-cdn.com/flex035/user_avatar/forums.fusetools.com/anders_bondehagen/32/98_2.png) [@Anders\_Bondehagen](https://forums.fusetools.com/u/Anders_Bondehagen)\
**Post date:** [September 3, 2015, 10:30am UTC](https://forums.fusetools.com/t/looping-over-json-after-receiving-it/2218/8 "2015-09-03T10:30:07Z")

</div>

That should work, maybe you have an error in your json data?

---

<div class="post-metadata">

**Author:** ![Bjorn-Olav\_Strand](https://yyz1.discourse-cdn.com/flex035/user_avatar/forums.fusetools.com/bjorn-olav_strand/32/583_2.png) [@Bjorn-Olav\_Strand](https://forums.fusetools.com/u/Bjorn-Olav_Strand)\
**Post date:** [September 3, 2015, 11:27am UTC](https://forums.fusetools.com/t/looping-over-json-after-receiving-it/2218/9 "2015-09-03T11:27:34Z")

</div>

I have to wrap it in

```javascript
if (data.value != undefined) {
  var parsed = JSON.parse(data.value);
}

```

Since the function in addSubscriber gets called twice. One with undefined in data.value, and one with the actual data.
