package facepp import ( "encoding/json" ) type PixelBox struct { Left float64 `json:"left"` Top float64 `json:"top"` Width float64 `json:"width"` Height float64 `json:"height"` } var MapTypeKeys = map[string][]string{ "acne": {"acne", "acne_pustule", "acne_nodule", "acne_mark"}, "closed_comedones": {"closed_comedones"}, "brown_spot": {"brown_spot"}, "mole": {"mole"}, } func ExtractPixelBoxes(result json.RawMessage, keys ...string) ([]PixelBox, error) { if len(result) == 0 || string(result) == "null" { return nil, nil } var root map[string]json.RawMessage if err := json.Unmarshal(result, &root); err != nil { return nil, err } var out []PixelBox for _, key := range keys { raw, ok := root[key] if !ok { continue } for _, rect := range locatedRectangles(raw) { if rect.Width <= 0 || rect.Height <= 0 { continue } out = append(out, PixelBox{ Left: rect.Left, Top: rect.Top, Width: rect.Width, Height: rect.Height, }) } } return out, nil }