# Iterating over Json properties

**URL:** <https://discuss.kotlinlang.org/t/iterating-over-json-properties/1940>\
**Category:** JavaScript\
**Created:** [August 29, 2016, 12:13pm UTC](https://discuss.kotlinlang.org/t/iterating-over-json-properties/1940 "2016-08-29T12:13:51Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![jvskriubakken](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.kotlinlang.org/jvskriubakken/32/1430_2.png) [@jvskriubakken](https://discuss.kotlinlang.org/u/jvskriubakken)\
**Post date:** [August 29, 2016, 12:13pm UTC](https://discuss.kotlinlang.org/t/iterating-over-json-properties/1940/1 "2016-08-29T12:13:51Z")

</div>

Hi there!

I’m unsuccessfully trying to find a way to iterate over a Json object (which is expected to only contain properties with String values) so that I can fill a Map\<String,String\> from it. In either way I end up with an illegal cast exception.

Does anyone know how to do this?

Jørund

---

<div class="post-metadata">

**Author:** ![yole](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.kotlinlang.org/yole/32/1425_2.png) [@yole](https://discuss.kotlinlang.org/u/yole)\
**Post date:** [August 29, 2016, 12:34pm UTC](https://discuss.kotlinlang.org/t/iterating-over-json-properties/1940/2 "2016-08-29T12:34:05Z")

</div>

Could you please show the code that you’re using?

---

<div class="post-metadata">

**Author:** ![jvskriubakken](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.kotlinlang.org/jvskriubakken/32/1430_2.png) [@jvskriubakken](https://discuss.kotlinlang.org/u/jvskriubakken)\
**Post date:** [August 29, 2016, 12:54pm UTC](https://discuss.kotlinlang.org/t/iterating-over-json-properties/1940/3 "2016-08-29T12:54:35Z")

</div>

Thanks for following up!

This is what we have tried:

```
private fun jsonToMap(json: Json): Map<String, String> {
    val map: MutableMap<String, String> = linkedMapOf()
    for (key in json) {
        map.put(key, json[key] as String)
    }

    // or 
    for( (name, value) in json ) {
        map.put(name, value as String)
    }
    return map
}

```

---

<div class="post-metadata">

**Author:** ![bashor](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.kotlinlang.org/bashor/32/1431_2.png) [@bashor](https://discuss.kotlinlang.org/u/bashor)\
**Post date:** [August 30, 2016, 10:30am UTC](https://discuss.kotlinlang.org/t/iterating-over-json-properties/1940/4 "2016-08-30T10:30:13Z")

</div>

Hi, @jvskriubakken, try this:

```
private fun jsonToMap(json: Json): Map<String, String> {
    val map: MutableMap<String, String> = linkedMapOf()
    for (key in js("Object").keys(json)) {
        map.put(key, json[key] as String)
    }
    return map
}

```

---

<div class="post-metadata">

**Author:** ![jvskriubakken](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.kotlinlang.org/jvskriubakken/32/1430_2.png) [@jvskriubakken](https://discuss.kotlinlang.org/u/jvskriubakken)\
**Post date:** [August 30, 2016, 10:55am UTC](https://discuss.kotlinlang.org/t/iterating-over-json-properties/1940/5 "2016-08-30T10:55:49Z")

</div>

Thanks! It worked!

---

<div class="post-metadata">

**Author:** ![bashor](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.kotlinlang.org/bashor/32/1431_2.png) [@bashor](https://discuss.kotlinlang.org/u/bashor)\
**Post date:** [September 1, 2016, 10:10am UTC](https://discuss.kotlinlang.org/t/iterating-over-json-properties/1940/6 "2016-09-01T10:10:47Z")

</div>

Closed on September 1, 2016, 10:10am UTC



---

<div class="post-metadata">

**Author:** ![bashor](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.kotlinlang.org/bashor/32/1431_2.png) [@bashor](https://discuss.kotlinlang.org/u/bashor)\
**Post date:** [September 1, 2016, 10:10am UTC](https://discuss.kotlinlang.org/t/iterating-over-json-properties/1940/7 "2016-09-01T10:10:53Z")

</div>

Opened on September 1, 2016, 10:10am UTC



---

<div class="post-metadata">

**Author:** ![dstibbe](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.kotlinlang.org/dstibbe/32/6672_2.png) [@dstibbe](https://discuss.kotlinlang.org/u/dstibbe)\
**Post date:** [August 8, 2019, 8:01pm UTC](https://discuss.kotlinlang.org/t/iterating-over-json-properties/1940/8 "2019-08-08T20:01:21Z")

</div>

My 2cents for future references:

```
val jsObject = js("Object")

private fun parse(json: dynamic): Map<String, Transaction> {
    val entries= jsObject.entries(json) as Array<Array<dynamic>>
    
    return entries
            .map { entry ->
                entry[0] as String to parseObject(entry[1])
            }.toMap()
}

```

where in your case the parseObject method would be

```
private fun parseObject(json:dynamic) = json as String

```
