iis服务器助手广告
返回顶部
首页 > 资讯 > 精选 >Go 中的 YAML 自定义标签
  • 391
分享到

Go 中的 YAML 自定义标签

go语言 2024-02-10 10:02:05 391人浏览 薄情痞子
摘要

PHP小编香蕉为您介绍Go语言中的YAML自定义标签。YAML是一种轻量级的数据序列化格式,而Go语言作为一种强大的编程语言,自然也提供了对YAML的支持。在Go中,我们可以通过自定义

PHP小编香蕉为您介绍Go语言中的YAML自定义标签。YAML是一种轻量级的数据序列化格式,而Go语言作为一种强大的编程语言,自然也提供了对YAML的支持。在Go中,我们可以通过自定义标签来定义YAML的数据结构,以便更好地解析和处理YAML数据。通过使用自定义标签,我们可以在Go中轻松地将YAML数据映射到结构体中,实现更灵活、便捷的数据处理。下面将详细介绍Go中的YAML自定义标签的使用方法和注意事项。

问题内容

我在 go 中有这些嵌套结构,并为其属性添加了自定义标签,

type dummyparams struct {
  param1 string `yaml:"param1"`
  param2 string `yaml:"param2"`
}

type dummy struct {
  name string `yaml:"name"`
  type string `yaml:"type"`
  params dummyparams `yaml:"params"`
}

我创建了一些 dummy 实例并将它们添加到切片中,

dummies := make([]dummy, 0)
dummy1 := dummy {
    name: "a"
    type: "type a"
    params: dummyparams {
        param1: "foo"
        param2: "bar"
    }
}
dummies = append(dummies, dummy1)
dummy2 := dummy {
    name: "b"
    type: "type b"
    params: dummyparams {
        param1: "foo"
        param2: "bar"
    }
}
dummies = append(dummies, dummy2)

最后我整理数据并将其写入文件

yamlData, err := yaml.Marshal(&dummies)
// handle error ...
writeErr := os.WriteFile("foo.yaml", yamlData, 0644)
// handle write error ...

但是我得到的 yaml 没有小写标记名称,而是有大写结构名称。 有人知道为什么会发生这种情况以及如何解决它吗?

解决方法

归咎于您正在使用的 yaml 实现。例如,如果您使用 gopkg.in/yaml.v3 ,它就可以工作。在 go playground 上尝试一下。因此,一种解决方案是使用另一种 yaml 实现,例如 gopkg.in/yaml.v3

您在评论中提到您正在使用 https:// /pkg.go.dev/sigs.k8s.io/[电子邮件受保护]。它的包文档说:

简而言之,该库首先使用 go-yaml 将 yaml 转换为 JSON,然后使用 json.marshaljson.unmarshal 与结构进行转换。这意味着它有效地重用了 json 结构标签以及自定义 json 方法 marshaljsonunmarshaljson ,这与 go-yaml 不同。

所以 sigs.k8s.io/[email protected] 第一个编组到 json。如果您想要小写的字段名称,请使用 json 标签而不是 yaml 标签:

import "sigs.k8s.io/yaml"

type dummyparams struct {
    param1 string `json:"param1"`
    param2 string `json:"param2"`
}

type dummy struct {
    name   string      `json:"name"`
    type   string      `json:"type"`
    params dummyparams `json:"params"`
}

通过此更改,输出包含小写名称(在 go playground 上尝试):

- name: a
  params:
    param1: foo
    param2: bar
  type: type a
- name: b
  params:
    param1: foo
    param2: bar
  type: type b

请注意,必须使用 json 标签而不是 yaml 才能使其工作只是 sigs.k8s.io/[电子邮件受保护] 包。如果您想让它与这个包和其他yaml实现一起使用,您可以提供两者 jsonyaml 标签:

type DummyParams struct {
    Param1 string `json:"param1" yaml:"param1"`
    Param2 string `json:"param2" yaml:"param2"`
}

type Dummy struct {
    Name   string      `json:"name" yaml:"name"`
    Type   string      `json:"type" yaml:"type"`
    Params DummyParams `json:"params" yaml:"params"`
}

以上就是Go 中的 YAML 自定义标签的详细内容,更多请关注编程网其它相关文章!

--结束END--

本文标题: Go 中的 YAML 自定义标签

本文链接: https://www.lsjlt.com/news/563013.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Go 中的 YAML 自定义标签
    php小编香蕉为您介绍Go语言中的YAML自定义标签。YAML是一种轻量级的数据序列化格式,而Go语言作为一种强大的编程语言,自然也提供了对YAML的支持。在Go中,我们可以通过自定义...
    99+
    2024-02-10
    go语言
  • Java中和使用自定义标签
    这篇文章将为大家详细讲解有关Java中和使用自定义标签,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。简单例子实现一个标签分为两步:(1)继承SimpleTagSupport或TagSuppo...
    99+
    2023-05-30
    java
  • JSP怎么自定义标签
    这篇文章主要讲解了“JSP怎么自定义标签”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JSP怎么自定义标签”吧!创建”Hello”标签接下来,我们想创建一个自定义标签叫作,标签格式为:要创建...
    99+
    2023-06-27
  • html 自定义标签怎么弄
    非常抱歉,由于您没有提供文章标题,我无法为您生成一篇高质量的文章。请您提供文章标题,我将尽快为您生成一篇优质的文章。...
    99+
    2024-05-16
  • Java自定义Spring配置标签
    引言: 在Sping中,一般使用<bean>这样的元素来配置一个bean,Spring在创建容器的时候会扫描这些配置,根据配置创建对象存放于容器中,然后我们再从容器中取出...
    99+
    2024-04-02
  • Django5中怎么自定义过滤器和标签
    这篇文章将为大家详细讲解有关Django5中怎么自定义过滤器和标签,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。  目录结构  1.(创建)在主目录下创建名为common的python包(自...
    99+
    2023-06-02
  • Spring开发中如何实现自定义标签
    今天就跟大家聊聊有关Spring开发中如何实现自定义标签,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Spring框架是现在Java最流行的开源框架之一,并且Spring下的各种子项...
    99+
    2023-05-31
    spring 标签
  • Vue中自定义标签及其使用方式
    目录问题需求自定义创建组件的vue文件编辑组件使用导入申明使用使用整个代码效果问题 我们在使用Vue开发移动端应用程序时,常常使用Vant Weapp中的组件库,但是我们想过它是怎么...
    99+
    2024-04-02
  • java怎么自定义标签实现类
    要自定义一个标签实现类,需要按照以下步骤进行操作: 创建一个类,该类需要实现javax.servlet.jsp.tagext.T...
    99+
    2023-10-28
    java
  • vue中标签自定义属性的使用及说明
    目录vue标签自定义属性使用举个例子vue自定义属性的设置及获取vue中设置自定义属性及获取总结vue标签自定义属性使用 在 vue 中,尽量避免对dom的操作,通过对状态的管理实现...
    99+
    2023-05-19
    vue标签 vue标签自定义属性 vue定义属性
  • 如何使用Spring自定义Xml标签
    目录前言正文自定义NameSpaceHandler自定义schemaParserDecorator总结前言 在早期基于Xml配置的Spring Mvc项目中,我们往往会使用<...
    99+
    2024-04-02
  • Vant的Tabbar标签栏引入自定义图标方式
    目录Tabbar标签栏引入自定义图标vant自义定Tabbar图标和颜色Tabbar标签栏引入自定义图标 **使用*van-tabbar*组件** *v-model*绑定的是对应的T...
    99+
    2024-04-02
  • Navicat Premium自定义 sql 标签的创建方式
    目录说明自定义标签创建方式自定义sql标签创建mysql用户并授权创建触发器创建视图创建数据表创建数据库创建索引说明 Navicat 中可以自定义一下sql语句的标签,方便开发者使用...
    99+
    2024-04-02
  • FineReport中怎么利用JavaScript自定义地图标签
    这期内容当中小编将会给大家带来有关FineReport中怎么利用JavaScript自定义地图标签,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。 <span >'+ FR.cont...
    99+
    2023-06-04
  • HTML中sub标签如何定义
    这篇文章将为大家详细讲解有关HTML中sub标签如何定义,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。     HTML<sub>标签 ...
    99+
    2024-04-02
  • html中q标签如何定义
    小编给大家分享一下html中q标签如何定义,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!     HTML...
    99+
    2024-04-02
  • javaWeb自定义标签用法实例详解
    本文实例讲述了javaWeb自定义标签用法。分享给大家供大家参考,具体如下:自定义标签创建自定义标签主要用于移除Jsp页面中的Java代码。移除jsp页面中的java代码,只需要完成两个步骤:- 编写一个继承TagSupport的Java类...
    99+
    2023-05-31
    javaweb 自定义标签 ava
  • 怎么入门JSP自定义标签开发
    这期内容当中小编将会给大家带来有关怎么入门JSP自定义标签开发,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。一般情况下开发jsp自定义标签需要引用以下两个包import javax.servlet.jsp...
    99+
    2023-06-17
  • html中optgroup标签如何定义
    小编给大家分享一下html中optgroup标签如何定义,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!     HTML<optgroup>标签 &nb...
    99+
    2024-04-02
  • html中dd标签如何定义
    这篇文章主要介绍html中dd标签如何定义,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!     HTML<dd>标签实例   &nbs...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作