in dev/import-beats/kibana.go [399:429]
func decodeFields(ms mapStr) (mapStr, error) {
for _, field := range encodedFields {
v, err := ms.getValue(field)
if err == errKeyNotFound {
continue
} else if err != nil {
return nil, errors.Wrapf(err, "retrieving value failed (key: %s)", field)
}
var target interface{}
var vd mapStr
vStr := v.(string)
err = json.Unmarshal([]byte(vStr), &vd)
if err != nil {
var vda []mapStr
err = json.Unmarshal([]byte(vStr), &vda)
if err != nil {
return nil, errors.Wrapf(err, "unmarshalling value failed (key: %s)", field)
}
target = vda
} else {
target = vd
}
_, err = ms.put(field, target)
if err != nil {
return nil, errors.Wrapf(err, "putting value failed (key: %s)", field)
}
}
return ms, nil
}