...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 package post
16
17 import (
18 "github.com/go-openapi/validate"
19 )
20
21
22
23 func Prune(r *validate.Result) {
24 prune(r.Data(), r)
25 }
26
27 func prune(data interface{}, result *validate.Result) {
28 switch obj := data.(type) {
29 case map[string]interface{}:
30 pruneObject(obj, result)
31 for _, val := range obj {
32 prune(val, result)
33 }
34 case []interface{}:
35 for _, item := range obj {
36 prune(item, result)
37 }
38 }
39 }
40
41 func pruneObject(obj map[string]interface{}, result *validate.Result) {
42 fieldSchemata := result.FieldSchemata()
43 for field := range obj {
44 if schemata, ok := fieldSchemata[validate.NewFieldKey(obj, field)]; !ok || len(schemata) == 0 {
45 delete(obj, field)
46 }
47 }
48 }
49
View as plain text