toJSON method
Implementation
Map<String, dynamic> toJSON() {
final Map<String, dynamic> result = {};
// An empty id is treated as absent, so an id-less setUserData sends no id.
if (id != null && id!.isNotEmpty) result['id'] = id;
// Add optional fields only if they are not null
if (name != null) result['name'] = name;
if (phone != null) result['phone'] = phone;
if (email != null) result['email'] = email;
if (userCreatedAt != null) result['user_created_at'] = userCreatedAt;
if (isFirstTimeUser != null) result['is_first_time_user'] = isFirstTimeUser;
if (mixpanelDistinctId != null) result['mixpanel_distinct_id'] = mixpanelDistinctId;
if (amplitudeDeviceId != null) result['amplitude_device_id'] = amplitudeDeviceId;
if (posthogDistinctId != null) result['posthog_distinct_id'] = posthogDistinctId;
if (brazeDeviceId != null) result['braze_device_id'] = brazeDeviceId;
if (gaAppInstanceId != null) result['ga_app_instance_id'] = gaAppInstanceId;
if (gaSessionId != null) result['ga_session_id'] = gaSessionId;
if (netcoreDeviceGuid != null) result['netcore_device_guid'] = netcoreDeviceGuid;
if (moengageUserId != null) result['moengage_user_id'] = moengageUserId;
return result;
}