我想写一个小的 Go 程序,我可以用它来美化 json 数据。当我使用文件时它已经工作了。这是代码:
package main
import (
"bufio"
"fmt"
"github.com/Jeffail/gabs"
"log"
"os"
)
func main() {
info, err := os.Stdin.Stat()
if err != nil {
log.Fatal(err)
}
if info.Mode()&os.ModeCharDevice != 0 || info.Size() <= 0 {
fmt.Println("The command is intended to work with pipes.")
fmt.Println("cat file.json | prettyjson")
return
}
reader := bufio.NewReader(os.Stdin)
input, err := reader.ReadBytes('\n')
if err != nil {
log.Fatal()
}
jsonParsed, err := gabs.ParseJSON(input)
if err != nil {
log.Fatal("couldn't parse json")
}
fmt.Println(fmt.Println(jsonParsed.StringIndent("", " ")))
}
如果我像这样使用 curl 运行此代码:
curl -s "https://min-api.cryptocompare.com/data/top/exchanges?fsym=BTC&tsym=USD" | prettyjson
我得到:(23) Failed writing body
我在这篇文章中看到在curl 可以写入所有数据之前管道正在关闭,但是我如何优化我的 Go 程序以等待 curl 完成?
有只小跳蛙
相关分类