程序
package main
import (
"encoding/json"
"log"
"os"
)
/**
JSON的流式读写
内建的encoding/json包中提供Decoder和Encoder两种类型
提供NewDecoder()和NewEncoder()函数实现
**/
func main() {
dec := json.NewDecoder(os.Stdin) //标准输入流 返回*Decoder
enc := json.NewEncoder(os.Stdout) //标准输出流 返回*Encoder
for {
var v map[string]interface{}
if err := dec.Decode(&v); err != nil { //解码底层也是用Unmarshall()实现的 编码也一样
log.Println(err)
return
}
for k := range v { //获取map的key值
if k != "Title" {
delete(v, k) //map删除键不为Title的键值对,若果k是nil的话,程序会抛出异常panic
}
}
if err := enc.Encode(&v); err != nil {
log.Println(err)
}
}
}
Ouput
F:\GoWork> go run jsondemo.go
{"Title":"GO","Price":20.34}
{"Title":"GO"}
{"Title":"GO","Age":12}
{"Title":"GO"}
注意
json格式数据在控制台的输入