Convert interface{} to struct in Golang

Decode the JSON directly to types you want instead of decoding to an interface{}.

Declare types that match the structure of your JSON data. Use structs for JSON objects and slices for JSON arrays:

type transform struct {
    // not enough information in question to fill this in.
}

type urlTransform struct {
    Item string
    Transform transform
}

var transforms []urlTransform

The field names must be exported (start with uppercase letter).

Unmarshal the JSON to the declared value:

err := json.Unmarshal(data, &transforms)

or

err := json.NewDecoder(reader).Decode(&transforms)

From your response : [map[item:electricity transform:{fuelType}] map[transform:{fuelType} item:gas]]. As you can see here this is a an array that has map in it.

One way to get the value from this is :

values := yourResponse[0].(map[string]interface{}). // convert first index to map that has interface value.
transform := urlTransform{}
transform.Item = values["item"].(string) // convert the item value to string
transform.Transform = values["transform"].(string)
//and so on...

as you can see from the code above I'm getting the the value using map. And convert the value to the appropriate type in this case is string.

You can convert it to appropriate type like int or bool or other type. but this approach is painful as you need to get the value one bye one and assign it your your field struct.