Go语言解析YAML

1 概述

YAML是"YAML Ain’t a Markup Language"(YAML不是一种置标语言)的递归缩写。YAML 以数据为中心,使用空白,缩进,分行组织数据,从而使得表示更加简洁易读。一个典型的 YAML 如下:

title: 小韩说课
category: go
tag:
- OOP
- GoLang

基本语法为:

  • 使用缩进表示层级关系
  • 禁止使用tab缩进,只能使用空格键
  • 缩进长度没有限制,只要元素对齐就表示这些元素属于一个层级

在项目中,配置文件选择 YAML 是常见的选择。

参考文档:

本文介绍在 Go 语言中解析 YAML。

2 安装 go-yaml/yaml

Go 语言中解析 YAML 最出名的应该是 go-yaml/yaml。github地址为: https://github.com/go-yaml/yaml

下面的命令将其安装在 GOPATH 目录中:

go get gopkg.in/yaml.v2

3 解析 YAML

yaml.Unmarshal 函数负责将 YAML 格式文本解析,演示如下:

import (
  "gopkg.in/yaml.v2"
)

// 待解析数据
yamlContent := `
field1: 小韩说课
field2:
  field3: value
  field4: [42, 1024]
`
// 存储解析数据
result := make(map[string]interface{})
// 执行解析   
err = yaml.Unmarshal([]byte(data), &result)
if err != nil {
  log.Fatalf("error: %v", err)
}
// result
// map[field1:小韩说课 field2:map[field3:value field4:[42 1024]]]

4 构建 YAML

yaml.Marshal 函数可以利用 map 数据构建 YAML 文本,演示如下:

import (
  "gopkg.in/yaml.v2"
)

// map数据
data := map[string]interface{}{
    "field1": "小韩说课",
    "field2": map[string]interface{}{
      "field3": "value",
      "field4": []int{42, 1024}
    }
  }
text, err = yaml.Marshal(&data)
if err != nil {
  log.Fatalf("error: %v", err)
}
// text
field1: 小韩说课
field2:
  field3: value
  field4:
  - 42
  - 1024

完!
原文出自:小韩说课
微信关注:小韩说课
小韩说课

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值