-
Notifications
You must be signed in to change notification settings - Fork 13
/
workplanpatternrequest.go
111 lines (93 loc) · 3.7 KB
/
workplanpatternrequest.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
package platformclientv2
import (
"github.com/leekchan/timeutil"
"reflect"
"encoding/json"
"strconv"
"strings"
)
// Workplanpatternrequest
type Workplanpatternrequest struct {
// SetFieldNames defines the list of fields to use for controlled JSON serialization
SetFieldNames map[string]bool `json:"-"`
// WorkPlanIds - List of work plan IDs in order of rotation on a weekly basis. Values in the list cannot be null or empty
WorkPlanIds *[]string `json:"workPlanIds,omitempty"`
}
// SetField uses reflection to set a field on the model if the model has a property SetFieldNames, and triggers custom JSON serialization logic to only serialize properties that have been set using this function.
func (o *Workplanpatternrequest) SetField(field string, fieldValue interface{}) {
// Get Value object for field
target := reflect.ValueOf(o)
targetField := reflect.Indirect(target).FieldByName(field)
// Set value
if fieldValue != nil {
targetField.Set(reflect.ValueOf(fieldValue))
} else {
// Must create a new Value (creates **type) then get its element (*type), which will be nil pointer of the appropriate type
x := reflect.Indirect(reflect.New(targetField.Type()))
targetField.Set(x)
}
// Add field to set field names list
if o.SetFieldNames == nil {
o.SetFieldNames = make(map[string]bool)
}
o.SetFieldNames[field] = true
}
func (o Workplanpatternrequest) MarshalJSON() ([]byte, error) {
// Special processing to dynamically construct object using only field names that have been set using SetField. This generates payloads suitable for use with PATCH API endpoints.
if len(o.SetFieldNames) > 0 {
// Get reflection Value
val := reflect.ValueOf(o)
// Known field names that require type overrides
dateTimeFields := []string{ }
localDateTimeFields := []string{ }
dateFields := []string{ }
// Construct object
newObj := make(map[string]interface{})
for fieldName := range o.SetFieldNames {
// Get initial field value
fieldValue := val.FieldByName(fieldName).Interface()
// Apply value formatting overrides
if fieldValue == nil || reflect.ValueOf(fieldValue).IsNil() {
// Do nothing. Just catching this case to avoid trying to custom serialize a nil value
} else if contains(dateTimeFields, fieldName) {
fieldValue = timeutil.Strftime(toTime(fieldValue), "%Y-%m-%dT%H:%M:%S.%fZ")
} else if contains(localDateTimeFields, fieldName) {
fieldValue = timeutil.Strftime(toTime(fieldValue), "%Y-%m-%dT%H:%M:%S.%f")
} else if contains(dateFields, fieldName) {
fieldValue = timeutil.Strftime(toTime(fieldValue), "%Y-%m-%d")
}
// Assign value to field using JSON tag name
newObj[getFieldName(reflect.TypeOf(&o), fieldName)] = fieldValue
}
// Marshal and return dynamically constructed interface
return json.Marshal(newObj)
}
// Redundant initialization to avoid unused import errors for models with no Time values
_ = timeutil.Timedelta{}
type Alias Workplanpatternrequest
return json.Marshal(&struct {
WorkPlanIds *[]string `json:"workPlanIds,omitempty"`
Alias
}{
WorkPlanIds: o.WorkPlanIds,
Alias: (Alias)(o),
})
}
func (o *Workplanpatternrequest) UnmarshalJSON(b []byte) error {
var WorkplanpatternrequestMap map[string]interface{}
err := json.Unmarshal(b, &WorkplanpatternrequestMap)
if err != nil {
return err
}
if WorkPlanIds, ok := WorkplanpatternrequestMap["workPlanIds"].([]interface{}); ok {
WorkPlanIdsString, _ := json.Marshal(WorkPlanIds)
json.Unmarshal(WorkPlanIdsString, &o.WorkPlanIds)
}
return nil
}
// String returns a JSON representation of the model
func (o *Workplanpatternrequest) String() string {
j, _ := json.Marshal(o)
str, _ := strconv.Unquote(strings.Replace(strconv.Quote(string(j)), `\\u`, `\u`, -1))
return str
}