猿问

如何在Go中打印出JSON

我是Go的新手,在弄清楚如何打印出我创建的JSON时遇到了麻烦。我正在使用“ encoding / json”,并且正在返回一个[] byte。但是,当我打印出来时,我得到:


cannot use json_msg (type []byte) as type string in function argument

收到此消息后,我尝试将[] byte数组转换为字符串或空接口。但是我似乎无法使其正常工作。有任何想法吗?相关代码如下:


type Message struct {

    Id int

    Name string

}




for _, row := range rows {

    m := Message{row.Int(0), row.Str(1)}


    json_msg, err := json.Marshal(m)


    if err == nil {

        panic(err)

    }//if


            //tried below to print out a interface, didn't work either

    //var f interface{}

    //err = json.Unmarshal(json_msg, &f)


    fmt.Fprintf(c.ResponseWriter, json_msg)

}//for


www说
浏览 490回答 3
3回答

海绵宝宝撒

您json_msg在Printf类型函数中string用作格式字符串,仅将其用作格式字符串([]byte和string是不同的类型。尽管可以将它们彼此转换)。写入字节片的正确方法是指定格式字符串:fmt.Fprintf(WRITER_OBJ, "%s", json_msg)这将打印[]byteUnicode内容。在Fprintf / Printf中,不应将变量用作格式字符串。我认为这不会像C语言那样有问题。但是,如果您的JSON中包含“%”,则可能会引起问题。
随时随地看视频慕课网APP

相关分类

Go
我要回答