42 lines
769 B
Go
42 lines
769 B
Go
package utils
|
|
|
|
type MapHelper struct {
|
|
}
|
|
|
|
func (h *MapHelper) GetString(m map[string]interface{}, key string, defaultVal string) string {
|
|
val, ok := m[key]
|
|
if !ok {
|
|
return defaultVal
|
|
}
|
|
|
|
result, ok := val.(string)
|
|
if !ok {
|
|
return defaultVal
|
|
}
|
|
|
|
return result
|
|
}
|
|
|
|
func (h *MapHelper) GetData(m map[string]interface{}, key string) []byte {
|
|
val, ok := m[key]
|
|
if !ok {
|
|
return nil
|
|
}
|
|
|
|
// TODO maybe there is a better way to serialize and deserialize JSON RPC binary data
|
|
// Go by default does not convert []uint JSON into []byte. Thus the code below
|
|
vals, ok := val.([]interface{})
|
|
if !ok {
|
|
return nil
|
|
}
|
|
|
|
var x int64
|
|
result := make([]byte, len(vals))
|
|
for i, value := range vals {
|
|
x = int64(value.(float64))
|
|
result[i] = byte(x)
|
|
}
|
|
|
|
return result
|
|
}
|