Skip to content

Commit c92ad59

Browse files
committed
json unmarshaler for HashmapE
1 parent 1605191 commit c92ad59

File tree

1 file changed

+22
-0
lines changed

1 file changed

+22
-0
lines changed

tlb/models.go

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,28 @@ func (h HashmapE[keyT, T]) MarshalJSON() ([]byte, error) {
144144
return json.Marshal(m)
145145
}
146146

147+
func (h *HashmapE[keyT, T]) UnmarshalJSON(data []byte) error {
148+
var (
149+
m map[string]T
150+
hInt Hashmap[keyT, T]
151+
)
152+
if err := json.Unmarshal(data, &m); err != nil {
153+
return err
154+
}
155+
hInt.keys = make([]keyT, 0, len(m))
156+
hInt.values = make([]T, 0, len(m))
157+
for k, v := range m {
158+
var key keyT
159+
if err := json.Unmarshal([]byte(k), &key); err != nil {
160+
return err
161+
}
162+
hInt.keys = append(hInt.keys, key)
163+
hInt.values = append(hInt.values, v)
164+
}
165+
h.m = hInt
166+
return nil
167+
}
168+
147169
func (f ExtraCurrencyCollection) MarshalJSON() ([]byte, error) {
148170
return f.Dict.MarshalJSON()
149171
}

0 commit comments

Comments
 (0)