toJson method

Map<String, dynamic> toJson()

Converts this result to JSON format.

Useful for serialization, logging, and debugging. Note that complex payload objects may not serialize completely if they don't implement toJson().

Example:

final json = result.toJson();
print('Result: $json');

Returns a JSON-serializable map

Implementation

Map<String, dynamic> toJson() {
  final Map<String, dynamic> json = {
    'isSuccess': isSuccess,
    'error': error,
    'timestamp': timestamp.toIso8601String(),
    'interactionId': interactionId,
    'metadata': metadata,
  };

  // Handle data
  if (data != null) {
    json['data'] = data;
  }

  // Handle payload - try toJson() method or leave as-is
  if (payload != null) {
    try {
      final dynamic obj = payload;
      json['payload'] = obj.toJson();
      json['payloadType'] = payload.runtimeType.toString();
    } catch (e) {
      // Payload doesn't have toJson() - store type info only
      json['payloadType'] = payload.runtimeType.toString();
      json['hasPayload'] = true;
    }
  }

  return json;
}