golang yaml与json配置文件互

栏目: Go · 发布时间: 6年前

  • java 中可利用snakeyaml库进行yaml与json配置文件格式互转,原理就是yaml解析为map对象,再将ma对象p转为json,反之亦然
  • 本文重点介绍yaml文件的解析
  • golang中比较流行的yaml.v2提供了对yaml配置文件的操作,encoding/json库提供了对json配置文件的操作,但比较繁琐的是可能需要在代码中定义对应配置文件结构的struct结构来存储解析结构,缺少灵活度。但也可以利用Unmarshal、marshal来直接解析成map存储。
  • 将yaml配置内容解析到map对象中
package main

import (
    "fmt"
    "log"

    "gopkg.in/yaml.v2"
    "io/ioutil"
)


func main() {
    t := map[string]interface{}{}
    buffer, err := ioutil.ReadFile("./config.dev.yaml")
    err = yaml.Unmarshal(buffer, &t)
    if err != nil {
        log.Fatalf(err.Error())
    }
    fmt.Printf("%v",t)
}
  • 理论上可以利用yaml.v2将yaml转为map,再将map转为json,但是golang的类型转换实在恶心...
  • yaml配置文件转json格式。这里需要另一个库 https://github.com/ghodss/yaml
# 安装
go get -u github.com/ghodss/yaml
# 使用
package main

import (
    "fmt"

    "github.com/ghodss/yaml"
)

func main() {
    j := []byte(`{"name": "John", "age": 30}`)
    y, err := yaml.JSONToYAML(j)
    if err != nil {
        fmt.Printf("err: %v\n", err)
        return
    }
    fmt.Println(string(y))
    /* Output:
    name: John
    age: 30
    */
    j2, err := yaml.YAMLToJSON(y)
    if err != nil {
        fmt.Printf("err: %v\n", err)
        return
    }
    fmt.Println(string(j2))
    /* Output:
    {"age":30,"name":"John"}
    */
}
  • 在实战中,是先调用yaml.YAMLToJSON将yaml转为json文本,再利用json.Unmarshal将json文本解析为内存map。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

软件的奥秘

软件的奥秘

[美] V. Anton Spraul / 解福祥 / 人们邮电出版社 / 2017-9-1 / 49

软件已经成为人们日常生活与工作中常见的辅助工具,但是对于软件的工作原理,很多人却不是非常了解。 本书对软件的工作原理进行了解析,让读者对常用软件的工作原理有一个大致的了解。内容涉及数据如何加密、密码如何使用和保护、如何创建计算机图像、如何压缩和存储视频、如何搜索数据、程序如何解决同样的问题而不会引发冲突以及如何找出最佳路径等方面。 本书适合从事软件开发工作的专业技术人员,以及对软件工作......一起来看看 《软件的奥秘》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

SHA 加密
SHA 加密

SHA 加密工具