去json解码器定义,在这种情况下应该作为输入

时间:2014-08-26 15:33:47

标签: go

我有一个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)



}

感谢

1 个答案:

答案 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.Marshaljson.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)