I am trying to unmarshal a JSON object into a struct in Go. Here is the JSON object:
{"configuration": {
"current power source": "",
"sensor catalogue": [[], [], [], []],
"actuator catalogue": [[], [], [], []],
"active interface": ""
}
}
And here is the struct in Go:
type Data struct{
Configuration struct {
CurrentPowerSource string `json: "current power source"`
SensorCatalogue //what is the type in Go for list within a list?
ActuatorCatalogue //each list within the list has a different type
ActiveInterface string `json: "active interface"`
}
}
My question is, how do I represent the type of list within a list in Go (in sensor catalogue
and actuator catalogue
)? When I fill my JSON object up with values, it'll look something like this:
{"sensor catalogue": [["temperature", "humidity"], ["dht22"], [17], ["digital"]]}
What is the proper way to unmarshal this?
It depends on what types are within the inner slices.
Arbitrary types? Use [][]interface{}
type Data struct{
Configuration struct {
CurrentPowerSource string
SensorCatalogue [][]interface{}
ActuatorCatalogue [][]interface{}
ActiveInterface string
}
}
String types? Use [][]string
type Data struct{
Configuration struct {
CurrentPowerSource string
SensorCatalogue [][]string
ActuatorCatalogue [][]string
ActiveInterface string
}
}
Custom types? Use [][]CustomType
type Data struct{
Configuration struct {
CurrentPowerSource string
SensorCatalogue [][]CustomType
ActuatorCatalogue [][]CustomType
ActiveInterface string
}
}
You get the idea...