# Parsing YAML key/values as list of structs in Go

**URL:** https://discuss.bitrise.io/t/parsing-yaml-key-values-as-list-of-structs-in-go/15308
**Category:** Step Dev
**Tags:** step
**Created:** [January 5, 2021, 12:51pm UTC](https://discuss.bitrise.io/t/parsing-yaml-key-values-as-list-of-structs-in-go/15308 "2021-01-05T12:51:57Z")
**Posts on this page:** 5
**Page:** 1

<div class="post-metadata">

### Author: ![jastley](https://sea2.discourse-cdn.com/flex016/user_avatar/discuss.bitrise.io/jastley/32/3328_2.png) [@jastley](https://discuss.bitrise.io/u/jastley)
#### Post date: [January 5, 2021, 12:51pm UTC](https://discuss.bitrise.io/t/parsing-yaml-key-values-as-list-of-structs-in-go/15308/1 "2021-01-05T12:51:58Z")

</div>

In a step that I’m working on, I want the user to be able to provide a list of optional YAML key/value pairs for a specific step input, currently trying to implement as:

```
inputs:
        - uri_actions:
            - button_text: Some text
              uri: www.google.com
            - button_text: Some text 2
              uri: www.google2.com
            - button_text: Some text 3
              uri: www.google3.com

```

and then attempting to parse in Go as structs:

```
type config struct {
    UriActionList []UriAction `env:"uri_actions"`
}

type UriAction struct {
    ButtonText string `env:"button_text"`
    Uri string `env:"uri"`
}

```

But this isn’t playing nice at all… what am I doing wrong? Is there a more civilised way to go about this?

---

<div class="post-metadata">

### Author: ![bitce](https://sea2.discourse-cdn.com/flex016/user_avatar/discuss.bitrise.io/bitce/32/1639_2.png) [@bitce](https://discuss.bitrise.io/u/bitce)
#### Post date: [January 8, 2021, 10:02am UTC](https://discuss.bitrise.io/t/parsing-yaml-key-values-as-list-of-structs-in-go/15308/2 "2021-01-08T10:02:31Z")

</div>

Hi @jastley!

I saw your discussion on our public slack too, so hoping this is sorted out, but in case anyone comes across this in the future, the recommended approach would be:

```
- my_step@1:
    inputs:
          - my_list: '[{"name":"obj","value": "123" }]'
```

---

<div class="post-metadata">

### Author: ![jastley](https://sea2.discourse-cdn.com/flex016/user_avatar/discuss.bitrise.io/jastley/32/3328_2.png) [@jastley](https://discuss.bitrise.io/u/jastley)
#### Post date: [January 8, 2021, 10:28am UTC](https://discuss.bitrise.io/t/parsing-yaml-key-values-as-list-of-structs-in-go/15308/3 "2021-01-08T10:28:50Z")

</div>

hey @bitce thanks for that, yeah this is what I ended up falling back to, but I don’t think it’s very user-friendly and it seemed far more intuitive to be able to set these values via YAML 😕

---

<div class="post-metadata">

### Author: ![bitce](https://sea2.discourse-cdn.com/flex016/user_avatar/discuss.bitrise.io/bitce/32/1639_2.png) [@bitce](https://discuss.bitrise.io/u/bitce)
#### Post date: [January 11, 2021, 10:14am UTC](https://discuss.bitrise.io/t/parsing-yaml-key-values-as-list-of-structs-in-go/15308/4 "2021-01-11T10:14:39Z")

</div>

I see, thanks for letting us know! Seems like a fair request, I’ll make sure to take note 🙂

---

<div class="post-metadata">

### Author: ![jastley](https://sea2.discourse-cdn.com/flex016/user_avatar/discuss.bitrise.io/jastley/32/3328_2.png) [@jastley](https://discuss.bitrise.io/u/jastley)
#### Post date: [January 11, 2021, 10:41pm UTC](https://discuss.bitrise.io/t/parsing-yaml-key-values-as-list-of-structs-in-go/15308/5 "2021-01-11T22:41:20Z")

</div>

For reference, [I opened a GitHub issue](https://github.com/bitrise-io/go-steputils/issues/23) requesting a way to pass a list of objects to steps, while it remains intuitive for the user to continue writing YAML rather than stringified JSON workarounds 🙂
