Если структура JSON неизвестна, передайте в json.Unmarshal указатель на map[string]interface{} или interface{}. Объекты станут map[string]interface{}, массивы - []interface{}, числа - float64.
Подводный камень: целые числа приходят как float64. Отсутствующие ключи или неверный тип при type assertion приведут к панике - используйте проверку if v, ok := m["age"].(float64); ok { ... }.