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

源码

package mainimport ("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_dirbools := Exists(filename)if !bools{fmt.Println("文件不存在");return}var suffix stringsuffix = 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

检查json 或 yaml 文件格式相关推荐

  1. Python常用配置文件ini、json、yaml读写总结

    开发项目时,为了维护一些经常需要变更的数据,比如数据库的连接信息.请求的url.测试数据等,需要将这些数据写入配置文件,将数据和代码分离,只需要修改配置文件的参数,就可以快速完成环境的切换或者测试数据 ...

  2. Python常用配置文件ini、json、yaml及python字典读写总结

    文章目录 1.ini格式 1.1 ini的读取删除操作 1.2 ini 写入操作 2.JSON格式 2.1 JSON示例格式 3. yaml格式 3.1 yaml的语法特点 3.2 yaml示例 3. ...

  3. yaml文件格式总结

    yaml文件格式总结 概念 基本语法 数据类型 YAML 对象 YAML 数组 复合结构 纯量 引用 概念 YAML 是 "YAML Ain't a Markup Language" ...

  4. yaml 文件格式简介

    from: http://www.cnblogs.com/phpgo/p/6480107.html .yaml 文件格式简介 命名 YAML 的意思其实是:"Yet Another Mark ...

  5. DL之Keras:keras保存网络结构、网络拓扑图、网络模型(json、yaml、h5等)注意事项及代码实现

    DL之Keras:keras保存网络结构.网络拓扑图.网络模型(json.yaml.h5等)注意事项及代码实现 目录 keras保存网络结构.网络拓扑图.网络模型(json.yaml.h5等)注意事项 ...

  6. js前台提示:参数不规范,请检查json的格式和参数对应的类型是否正确

    如图: 原来的代码是这样的: 这样的:(相当于导入另外的模块,其中validate.rule.extend.jsp里面存放了对应的提示语) 上面代码限定了文本框里面只能输入1000以内的数字,但是当输 ...

  7. maven项目集成swagger3生成json和yaml格式的openapi文件

    概述 纯maven项目中集成swagger3,项目中根据swagger3API定义规范定义api接口,通过扫描包路径生成json或yaml格式的文件,可供前端展示使用 pom依赖 <?xml v ...

  8. Java Json和yaml转换

    在开发过程中json格式的字符串用的是最多的,但是有时候也会遇到yaml格式的字符串:比如k8s的开发中创建资源的时候都是使用yaml去创建,如果api支持json的字符串创建还好,不能支持json格 ...

  9. 在线JSON转YAML工具

    在线JSON转YAML工具 在线JSON转YAML工具 在线将JSON转换成YAML的工具,支持复制和下载. JSON:(JavaScript Object Notation, JS 对象简谱) 是一 ...

最新文章

  1. 三维重建【二】————3D reconstruction 较为实用的算法资料整理(传统方式)
  2. Google 开源的依赖注入库,比 Spring 更小更快!
  3. 武器化道路越走越远的无人机
  4. Oracle 不使用DBCA在Oracle 11中删除数据库
  5. 基于机器学习的捡球机器人设计与实现(探索)第4篇——电机驱动板选择(2019-03-02)
  6. NYOJ 305 表达式求值
  7. BASIC-6 杨辉三角形
  8. numpy基础(part12)--快速傅里叶变换模块
  9. 开发工具:IDEA EasyCode插件用法(很实用)
  10. Androd之在图片右上角显示红色圆圈里面数字提醒
  11. Dataset XML 序列化,什么是序列化
  12. Hadoop2.x介绍与源代码编译
  13. PCurve - Curve on Surface
  14. 【老生谈算法】matlab实现遗传算法源码——遗传算法
  15. Prescan基础知识总结
  16. java中数组拼接成字符串中间用逗号隔开
  17. mysql中文拼音排序
  18. 区块链编程语言_区块链解决方案开发的编程语言
  19. 三天全力冲上中科大先研院
  20. 高一数学知识点复习:命题及其关系、充分条件

热门文章

  1. 量子计算机验证量子理论,物理学家使用量子计算机验证“时间倒转”
  2. foxmail for linux 64,ubuntu 通讯工具微信、qq、foxmail、迅雷
  3. Intermec PM4I 高性能条码打印机 特价促销
  4. 新型环保材料集成墙板有什么优点?是用什么材料做成的?
  5. 雷达花火后辈越来越多,鬼哥为什么要选择三度空间?
  6. Research on IC enterprises
  7. kera-bert,keras, tensorflow版本对应
  8. scrapy爬虫实践之抓取拉钩网招聘信息(4)
  9. U盘识别不了解决方案
  10. vm16.1安装macOS Big Sur 11.6