将json文件传递给GoLang函数

时间:2018-04-18 21:27:59

标签: go

刚开始使用Go。

我有一个Go函数,如下所示,我必须传递一个json文件。如何将json文件引用传递给此函数,即将其作为接口映射接受?

func compressOIds(mapDocument map[string]interface{}) string {
    var objectIdValue string
    for key, value := range mapDocument {
       ....
    }
    return ""
}

1 个答案:

答案 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