刚开始使用Go。
我有一个Go函数,如下所示,我必须传递一个json文件。如何将json文件引用传递给此函数,即将其作为接口映射接受?
func compressOIds(mapDocument map[string]interface{}) string {
var objectIdValue string
for key, value := range mapDocument {
....
}
return ""
}
答案 0 :(得分:2)
如果你的JSON结构没有明确定义并且可以改变,那么这就是你要走的路:
import (
"fmt"
"encoding/json"
)
func main() {
var b = []byte(`{"a":"b", "c":1, "d": ["e", "f"]}`)
var j map[string]interface{}
err := json.Unmarshal(b, &j)
if (err != nil) {
return
}
printJson(j)
}
func printJson(j map[string]interface{}) {
for k, v := range j {
fmt.Printf("%v %v\n", k, v)
}
}
如果你的JSON定义得很好,你可以将它解组成struct,这通常更好:
import (
"fmt"
"encoding/json"
)
type Message struct {
A string
C int
D []string
}
func main() {
var b = []byte(`{"a":"b", "c":1, "d": ["e", "f"]}`)
var j Message
err := json.Unmarshal(b, &j)
if (err != nil) {
return
}
printJson(j)
}
func printJson(j Message) {
fmt.Printf("A %v\n", j.A)
fmt.Printf("C %v\n", j.C)
fmt.Printf("D %v\n", j.D)
}
您可以在此处使用以后的代码:https://play.golang.org/p/wDPy4m2x2_t