eealeivan / mixpanel-csharp

Mixpanel C# integration library
MIT License
63 stars 15 forks source link

Lists always serialized to empty arrays #37

Open jfrueh opened 1 year ago

jfrueh commented 1 year ago

Thanks for the great library! I'm running into an issue with tracking events that have List properties. The message being sent to Mixpanel always contains an empty array after serialization (this happens whether I use the built in serializer or a different one).

Here is a really quick repro:

// Create a simple test event class:
public class TestEvent
{
    public List Items { get; set; }
    public class Item
    {
        public string Id { get; set; }
    }
}

// now just send the event (which is just a list of objects)
var client = new MixpanelClient("your_token");
var data = new TestEvent
{
    Items = new List {
        new TestEvent.Item { Id = "1" },
        new TestEvent.Item { Id = "2" },
        new TestEvent.Item { Id = "3" }
    }
};

var message = client.GetTrackMessage("test", data);

I would expect message to have a property called 'Items' that has a Count of 3. It has the Items property but it's an empty array (Count 0).

Any ideas what I'm doing wrong? I feel like this has to be a really common use case to send a list and that I'm just missing something.

Thanks for the help.

eealeivan commented 1 year ago

Current version of the library doesn't support complex objects as a list item. It will ignore anything else than: string, bool, char, number (int, double etc), Guid, DateTime, DateTimeOffset or TimeSpan.

So with your example if all you need is the list of ids I would suggest to convert Items to List<string>.

cyh0530 commented 9 months ago

Is there a plan to support complex objects? It will be greatly appreciated! 😃

bgp1 commented 4 months ago

I am also interested in knowing if this will be supported in the future. This is a pretty critical thing to support for ecommerce tracking to be able to include specific item purchase data.

Spec on Mixpanel itself on the topic: https://docs.mixpanel.com/docs/features/advanced#use-cases-1