1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
| package json
|
| import (
| "encoding/json"
| "fmt"
|
| "gopkg.in/yaml.v3"
| )
|
| // FromYAML convert yaml to json
| func FromYAML(v []byte) ([]byte, error) {
| m1 := make(map[interface{}]interface{})
| err := yaml.Unmarshal(v, &m1)
| if err != nil {
| return nil, err
| }
| m2 := convert(m1)
| j, err := json.Marshal(m2)
| if err != nil {
| return nil, err
| }
| return j, nil
| }
|
| func convert(m map[interface{}]interface{}) map[string]interface{} {
| res := map[string]interface{}{}
| for k, v := range m {
| var value interface{}
| switch v2 := v.(type) {
| case map[interface{}]interface{}:
| value = convert(v2)
| case []interface{}:
| for i, el := range v2 {
| if m, ok := el.(map[interface{}]interface{}); ok {
| v2[i] = convert(m)
| }
| }
| value = v2
| default:
| value = v
| }
| key := "null"
| if k != nil {
| key = fmt.Sprint(k)
| }
| res[key] = value
| }
| return res
| }
|
|