把一个 JSON 字符串转为一个 go struct 有两种方式:
用 json.Unmarshal
1 2 3 4
data, err := ioutil.ReadAll(resp.Body)
if err == nil && data != nil {
err = json.Unmarshal(data, value)
}
用 json.NewDecoder.Decode
1
err = json.NewDecoder(resp.Body).Decode(value)
io.Readerjson.Decoderjson.Unmarshal
下面是两种方式的使用示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
package main
import (
"encoding/json"
"fmt"
"strings"
)
func main() {
const jsonStream = `{"Name": "Ed", "Text": "Knock knock."}`
type Message struct {
Name, Text string
}
var m Message
// 用json.NewDecoder
dec := json.NewDecoder(strings.NewReader(jsonStream))
dec.Decode(&m)
fmt.Printf("%s: %s\n", m.Name, m.Text)
// 用 json.Unmarshal
json.Unmarshal([]byte(jsonStream), &m)
fmt.Printf("%s: %s\n", m.Name, m.Text)
fmt.Println("done")
}
运行输出:
1 2 3
Ed: Knock knock.
Ed: Knock knock.
done
本文网址: https://golangnote.com/topic/82.html 转摘请注明来源