我有一个go代码来将struct编码为json对象。 任何人都可以告诉我如何解码它? 我不明白的是,要定义解码器,它应该作为输入?
package main
import "encoding/json"
import "bytes"
//import "os"
import "fmt"
func main() {
var emptyAppendEntriesResponse bytes.Buffer
enc := json.NewEncoder(&emptyAppendEntriesResponse)
d := map[string]int{"apple": 5, "lettuce": 7}
enc.Encode(d)
}
感谢
答案 0 :(得分:2)
您可以使用bytes.Buffer
作为读者和写作者,但如果使用*bytes.Buffer
则更容易,因为无论如何都需要使用指针。
http://play.golang.org/p/NbK_D-bMML
emptyAppendEntriesResponse := bytes.NewBuffer(nil)
enc := json.NewEncoder(emptyAppendEntriesResponse)
d := map[string]int{"apple": 5, "lettuce": 7}
enc.Encode(d)
fmt.Println(string(emptyAppendEntriesResponse.Bytes()))
dec := json.NewDecoder(emptyAppendEntriesResponse)
d = map[string]int{}
dec.Decode(&d)
fmt.Printf("%+v\n", d)
如果您不直接使用io流,使用json.Marshal
和json.Unmarshal
通常会更方便,而不是创建编码器和解码器。
d := map[string]int{"apple": 5, "lettuce": 7}
resp, err := json.Marshal(&d)
fmt.Println(string(resp))
d = map[string]int{}
err = json.Unmarshal(resp, &d)
fmt.Printf("%+v\n", d)