...
1 package growthbook
2
3
4
5 type VariationMeta struct {
6 Passthrough bool
7 Key string
8 Name string
9 }
10
11 func jsonVariationMeta(v interface{}, typeName string, fieldName string) *VariationMeta {
12 obj, ok := v.(map[string]interface{})
13 if !ok {
14 logError("Invalid JSON data type", typeName, fieldName)
15 return nil
16 }
17
18 passthrough := false
19 key := ""
20 name := ""
21 vPassthrough, ptOk := obj["passthrough"]
22 if ptOk {
23 tmp, ok := vPassthrough.(bool)
24 if !ok {
25 logError("Invalid JSON data type", typeName, fieldName)
26 return nil
27 }
28 passthrough = tmp
29 }
30 vKey, keyOk := obj["key"]
31 if keyOk {
32 tmp, ok := vKey.(string)
33 if !ok {
34 logError("Invalid JSON data type", typeName, fieldName)
35 return nil
36 }
37 key = tmp
38 }
39 vName, nameOk := obj["name"]
40 if nameOk {
41 tmp, ok := vName.(string)
42 if !ok {
43 logError("Invalid JSON data type", typeName, fieldName)
44 return nil
45 }
46 name = tmp
47 }
48
49 return &VariationMeta{passthrough, key, name}
50 }
51
52 func jsonVariationMetaArray(v interface{}, typeName string, fieldName string) ([]VariationMeta, bool) {
53 vals, ok := v.([]interface{})
54 if !ok {
55 logError("Invalid JSON data type", typeName, fieldName)
56 return nil, false
57 }
58 metas := make([]VariationMeta, len(vals))
59 for i := range vals {
60 tmp := jsonVariationMeta(vals[i], typeName, fieldName)
61 if tmp == nil {
62 return nil, false
63 }
64 metas[i] = *tmp
65 }
66 return metas, true
67 }
68
View as plain text