Map<String, dynamic> toJson() { final Map<String, dynamic> result = Map.from(attributes); result.removeWhere((key, _) => _hiddenColumns.contains(key)); return result; }