eealeivan / mixpanel-csharp

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

Dictionary properties always serialized to empty arrays #43

Open TomSendrovich opened 8 months ago

TomSendrovich commented 8 months ago

Thanks for the great library! I'm running into an issue with tracking events that have Dictionary properties. The message sent to Mixpanel looks fine, but the specific Dictionary<string, object> property always contains an empty array after serialization.

Here is a quick example:

var client = new MixpanelClient("your_token"); Dictionary<string, object> properties = new Dictionary<string, object>();

Dictionary<string, object> Items = new Dictionary<string, object> { {"property1", 1}, {"property2", 2}, {"property3", 3}};

properties.Add("Custom Property", Items);

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

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

Thanks for the help.

ulf-melin-sveasolar commented 3 months ago

Does anyone know if this is the way it should work? I tried v 5.1.0 and 6.0.0 with the same result. Dictionary<string, object> properties are not passed into the SerializeJsonFn

MixpanelConfig config = new MixpanelConfig() { SerializeJsonFn = MixpanelJsonSerializer.Serialize, }; MixpanelClient client = new MixpanelClient("wdqwdqwdqwfwgwegwefgw", config);

    Dictionary<string, object> props = new Dictionary<string, object>
    {
        {"WorksNicely", "Hog" },
        {"BecomesEmptyArray", new[] {new Dictionary<string, object> {
            {"Test", "Best" }
        }
        } },
        {"NotHandledAtAll", new { Bos = true} }
    };.

var testMess = client.PeopleSetTest(Guid.NewGuid().ToString(), props);

This is what's in testMess.Json:

{"$set":{"WorksNicely":"Hog","BecomesEmptyArray":[]},"$token":"wdqwdqwdqwfwgwegwefgw","$distinct_id":"8e6b2a37-0e9a-4e15-a5bf-abc76da7ba70"}