>  기사  >  백엔드 개발  >  Go의 YAML 사용자 정의 태그

Go의 YAML 사용자 정의 태그

WBOY
WBOY앞으로
2024-02-10 10:18:08853검색

Go 中的 YAML 自定义标签

php 편집기 Banana는 Go 언어의 YAML 사용자 정의 태그를 소개합니다. YAML은 경량 데이터 직렬화 형식이며, 강력한 프로그래밍 언어인 Go 언어는 자연스럽게 YAML을 지원합니다. Go에서는 사용자 정의 태그를 통해 YAML 데이터 구조를 정의하여 YAML 데이터를 더 잘 구문 분석하고 처리할 수 있습니다. 사용자 정의 태그를 사용하면 YAML 데이터를 Go의 구조에 쉽게 매핑하여 보다 유연하고 편리한 데이터 처리를 달성할 수 있습니다. Go에서 YAML 커스텀 태그의 사용법과 주의사항을 자세히 소개합니다.

질문 내용

이러한 중첩 구조가 있고 해당 속성에 사용자 정의 태그를 추가했습니다.

으아아아

몇 가지 더미 인스턴스를 생성하여 슬라이스에 추가했습니다.

으아아아

마지막으로 데이터를 정리해서 파일에 씁니다

으아아아

하지만 제가 받은 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/<a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="2c554d41406c5a1d021f021c">[email protected]</a> 第一个编组到 json。如果您想要小写的字段名称,请使用 json 标签而不是 yaml 태그:

으아아아

이 변경으로 출력에는 소문자 이름이 포함됩니다(go 놀이터에서 시도해 보세요):

으아아아

json 标签而不是 yaml 才能使其工作只是 sigs.k8s.io/<a href="/cdn-cgi/l/email-protection" class="__cf_email__" 的一个怪癖data-cfemail="047d6569684472352a372a34">[电子邮件受保护]</a> 包。如果您想让它与这个包和其他yaml实现一起使用,您可以提供两者 jsonyaml 태그를 사용해야 한다는 점에 유의하세요.

으아아아

위 내용은 Go의 YAML 사용자 정의 태그의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 stackoverflow.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제
이전 기사:야옹 대화 데이터다음 기사:야옹 대화 데이터