栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

检查json 或 yaml 文件格式

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

检查json 或 yaml 文件格式

有时候我们修改了配置 json 或者 yaml 文件,需要校验下文件格式是否正确

源码

package main

import (
	"flag"
	"fmt"
	"github.com/ChengjinWu/gojson"
	"github.com/goccy/go-yaml"
	"io/ioutil"
	"os"
	"path/filepath"
)

// GOOS=linux go build  -x -v -ldflags "-s -w" -o gojson main.go
func main() {
	//if len(os.Args)!=0{
	//	fmt.Println(os.Args[0])// args 第一个片 是文件路径
	//}
	//fmt.Println(os.Args[1])  // 第二个参数是, 用户输入的参数 例如 go run osdemo01.go 123
	//flag简单使用方法
	backup_dir := flag.String("f", "config.json", "文件格式 -f config.json | -f config.yaml")
	flag.Parse()
	fmt.Println("验证文件: ",*backup_dir)
	filename  :=*backup_dir
	bools := Exists(filename)
	if !bools{
		fmt.Println("文件不存在");
		return
	}
	var suffix string
	suffix = filepath.Ext(filename)

	switch suffix {
	case ".json":
		fmt.Println("开始检验json文件",filename);
		err := validJson(filename)
		if err != nil {
			fmt.Println("校验失败",err);
			return
		}else{
			fmt.Println("格式正确");
		}

	case ".yaml":
		fmt.Println("开始检验yaml文件",filename);
		err := validYmal(filename)
		if err != nil {
			fmt.Println("校验失败",err);
			return
		}else{
			fmt.Println("格式正确");
		}
	default:
		fmt.Println("没找到验证的文件");

	}


}

func validJson(filename string ) (err error) {
	// 1, 把配置文件读进来
	content, err := ioutil.ReadFile(filename);
	if  err != nil {
		fmt.Println(err);
		return
	}

	err = gojson.CheckValid(content)

	return

}

func validYmal(filename string ) (err error )  {
	yamlFile, err := ioutil.ReadFile(filename)
	if err != nil {
		return
	}

	result := make(map[string]interface{})

	if err != nil {
		return
	}
	err = yaml.Unmarshal(yamlFile, &result)
	return

}


func Exists(path string) bool {
	_, err := os.Stat(path) //os.Stat获取文件信息
	if err != nil {
		if os.IsExist(err) {
			return true
		}
		return false
	}
	return true
}

打包成gojson后校验

GOOS=linux GOARCH=amd64 go build  -x -v -ldflags "-s -w" -o gojson main.go
./gojson -f config.json
或者
./gojson -f config.yaml

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/888630.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号