1 回答
TA贡献1869条经验 获得超4个赞
理想情况下,您应该对这些数组进行后处理以删除重复项。但是,您可以在解组期间使用带有解组器的自定义类型来实现此目的:
type UniqueStrings []string
func (u *UniqueStrings) UnmarshalJSON(in []byte) error {
var arr []string
if err:=json.Unmarshal(in,arr); err!=nil {
return err
}
*u=UniqueStrings(dedupStr(arr))
return nil
}
在哪里
func dedupStr(in []string) []string {
seen:=make(map[string]struct{})
w:=0
for i:=range in {
if _,s:=seen[in[i]]; !s {
seen[in[i]]=struct{}{}
in[w]=in[i]
w++
}
}
return in[:w]
}
您可以对 s 使用类似的方法[]int。
您在结构中使用自定义类型:
type CustomerData struct {
Process UniqueStrings `json:"Process"`
Mat UniqueStrings `json:"Mat"`
}
- 1 回答
- 0 关注
- 125 浏览
添加回答
举报
