File tree Expand file tree Collapse file tree 2 files changed +79
-0
lines changed
source/gameanalytics/Server Expand file tree Collapse file tree 2 files changed +79
-0
lines changed Original file line number Diff line number Diff line change 1+ #include " Server/GASerialize.h"
2+
3+ namespace gameanalytics
4+ {
5+ json serializeCustomFields (CustomFields const & customFields)
6+ {
7+ json j;
8+
9+ for (auto & [key, field]: customFields.fields )
10+ {
11+ switch (field.value .index ())
12+ {
13+ case CustomFields::Value::value_int:
14+ j[key] = std::get<int64_t >(field.value );
15+ break ;
16+
17+ case CustomFields::Value::value_float:
18+ j[key] = std::get<double >(field.value );
19+ break ;
20+
21+ case CustomFields::Value::value_str:
22+ j[key] = std::get<std::string>(field.value );
23+ break ;
24+
25+ case CustomFields::Value::value_bool:
26+ j[key] = std::get<bool >(field.value );
27+ break ;
28+ }
29+ }
30+
31+ return j;
32+ }
33+
34+ CustomFields deserializeCustomFields (json const & jsonFields)
35+ {
36+ CustomFields customFields;
37+
38+ for (auto & item: jsonFields.items ())
39+ {
40+ CustomFields::Value f;
41+ f.key = item.key ();
42+
43+ if (item.value ().is_boolean ())
44+ {
45+ f.value = item.value ().get <bool >();
46+ }
47+ else if (item.value ().is_number_float ())
48+ {
49+ f.value = item.value ().get <double >();
50+ }
51+ else if (item.value ().is_number_integer ())
52+ {
53+ f.value = item.value ().get <int64_t >();
54+ }
55+ else if (item.value ().is_string ())
56+ {
57+ f.value = item.value ().get <std::string>();
58+ }
59+ else // unsupported value
60+ {
61+ continue ;
62+ }
63+
64+ customFields.fields [f.key ] = std::move (f);
65+ }
66+
67+ return customFields;
68+ }
69+ }
Original file line number Diff line number Diff line change 1+ #pragma once
2+
3+ #include " GACommon.h"
4+ #include " Server/GACustomFields.h"
5+
6+ namespace gameanalytics
7+ {
8+ json serializeCustomFields (CustomFields const & customFields);
9+ CustomFields deserializeCustomFields (json const & jsonFields);
10+ }
You can’t perform that action at this time.
0 commit comments