Original post

type UserMessage struct {
ID primitive.ObjectID json:"id,omitempty" bson:"_id,omitempty"
Data DataType json:"data" bson:"data"
}

type DataType struct{
Details []DetailsData json:"details" bson:"details"
}

type DetailsData struct{
Name string json:"name" bson:"name"
Value []interface{} json:"value" bson:"value"
}

Sample data
`{“id”:“78787871287182”,
“data”:{
“details”:
[
{“name”:“Person”,“value”:“TestName”},
{“name”:“PersonRoles”,“value”:[{“name”:“DEV”,“type”:“open”},{“name”:“UAT”,“Type”:“closed”}]}
]
}
}’

I tried unmarshal by setup the DetailsData with interface{} and array of interface{}. Interface{} fails with value is just a string and [] interface{} fails to unmarshal when value is not an array.