JSON流式读写

程序

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格式数据在控制台的输入

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值