1
2
3
4
5
6
7 package j2x
8
9 import (
10 . "github.com/clbanning/mxj"
11 "io"
12 )
13
14
15 func JsonToMap(jsonVal []byte) (map[string]interface{}, error) {
16 return NewMapJson(jsonVal)
17 }
18
19
20 func MapToJson(m map[string]interface{}, safeEncoding ...bool) ([]byte, error) {
21 return Map(m).Json()
22 }
23
24
25 func JsonToXml(jsonVal []byte) ([]byte, error) {
26 m, err := NewMapJson(jsonVal)
27 if err != nil {
28 return nil, err
29 }
30 return m.Xml()
31 }
32
33
34 func JsonToXmlWriter(jsonVal []byte, xmlWriter io.Writer) error {
35 m, err := NewMapJson(jsonVal)
36 if err != nil {
37 return err
38 }
39 return m.XmlWriter(xmlWriter)
40 }
41
42
43 func JsonReaderToXml(jsonReader io.Reader) ([]byte, []byte, error) {
44 m, jraw, err := NewMapJsonReaderRaw(jsonReader)
45 if err != nil {
46 return jraw, nil, err
47 }
48 x, xerr := m.Xml()
49 return jraw, x, xerr
50 }
51
52
53 func JsonReaderToXmlWriter(jsonReader io.Reader, xmlWriter io.Writer) error {
54 m, err := NewMapJsonReader(jsonReader)
55 if err != nil {
56 return err
57 }
58 err = m.XmlWriter(xmlWriter)
59 return err
60 }
61
62
63
64
65 func JsonPathsForKey(jsonVal []byte, key string) ([]string, error) {
66 m, err := NewMapJson(jsonVal)
67 if err != nil {
68 return nil, err
69 }
70 paths := m.PathsForKey(key)
71 return paths, nil
72 }
73
74
75 func JsonPathForKeyShortest(jsonVal []byte, key string) (string, error) {
76 m, err := NewMapJson(jsonVal)
77 if err != nil {
78 return "", err
79 }
80 path := m.PathForKeyShortest(key)
81 return path, nil
82 }
83
84
85 func JsonValuesForKey(jsonVal []byte, key string, subkeys ...string) ([]interface{}, error) {
86 m, err := NewMapJson(jsonVal)
87 if err != nil {
88 return nil, err
89 }
90 return m.ValuesForKey(key, subkeys...)
91 }
92
93
94 func JsonValuesForKeyPath(jsonVal []byte, path string, subkeys ...string) ([]interface{}, error) {
95 m, err := NewMapJson(jsonVal)
96 if err != nil {
97 return nil, err
98 }
99 return m.ValuesForPath(path, subkeys...)
100 }
101
102
103
104
105
106
107
108 func JsonUpdateValsForPath(jsonVal []byte, newKeyValue interface{}, path string, subkeys ...string) ([]byte, error) {
109 m, err := NewMapJson(jsonVal)
110 if err != nil {
111 return nil, err
112 }
113 _, err = m.UpdateValuesForPath(newKeyValue, path, subkeys...)
114 if err != nil {
115 return nil, err
116 }
117 return m.Json()
118 }
119
120
121
122
123 func JsonNewJson(jsonVal []byte, keypairs ...string) ([]byte, error) {
124 m, err := NewMapJson(jsonVal)
125 if err != nil {
126 return nil, err
127 }
128 n, err := m.NewMap(keypairs...)
129 if err != nil {
130 return nil, err
131 }
132 return n.Json()
133 }
134
135
136
137
138 func JsonNewXml(jsonVal []byte, keypairs ...string) ([]byte, error) {
139 m, err := NewMapJson(jsonVal)
140 if err != nil {
141 return nil, err
142 }
143 n, err := m.NewMap(keypairs...)
144 if err != nil {
145 return nil, err
146 }
147 return n.Xml()
148 }
149
150
151
152 func JsonLeafNodes(jsonVal []byte) ([]LeafNode, error) {
153 m, err := NewMapJson(jsonVal)
154 if err != nil {
155 return nil, err
156 }
157 return m.LeafNodes(), nil
158 }
159
160
161
162 func JsonLeafValues(jsonVal []byte) ([]interface{}, error) {
163 m, err := NewMapJson(jsonVal)
164 if err != nil {
165 return nil, err
166 }
167 return m.LeafValues(), nil
168 }
169
170
171
172 func JsonLeafPath(jsonVal []byte) ([]string, error) {
173 m, err := NewMapJson(jsonVal)
174 if err != nil {
175 return nil, err
176 }
177 return m.LeafPaths(), nil
178 }
179
View as plain text