YAML을 구조체나 문자열 등의 복잡한 개체로 역마샬링합니다.

WBOY
풀어 주다: 2024-02-09 08:48:29
앞으로
889명이 탐색했습니다.

将 YAML 解组为复杂对象,可以是结构体或字符串

PHP Editor Strawberry 소개: YAML은 간결하고 읽기 쉬운 구문을 가지며 구성 파일 및 데이터 교환에 널리 사용되는 경량 데이터 직렬화 형식입니다. PHP에서는 YAML 구문 분석 라이브러리를 사용하여 YAML 데이터를 구조 또는 문자열일 수 있는 복잡한 객체로 역마샬링할 수 있습니다. 이를 통해 개발자는 구성 파일 및 기타 데이터를 편리하게 처리하고 조작할 수 있습니다. 복잡한 애플리케이션을 구축하든 구성 관리를 단순화하든 YAML 구문 분석은 PHP에서 중요한 역할을 합니다.

질문 내용

yaml을 map[string]map[interface{}]string와 같은 복잡한 개체로 역마샬링해 보세요. 문제는 구조인 stringsource 之间的 interface{} 부분을 구별할 수 있기를 원한다는 것입니다.

으아악

분명히 yaml은 source 结构中,所以我必须实现 unmarshaler 인터페이스로 역마샬링하는 방법을 모릅니다.

으아악

그런데 언마샬링 과정의 전반적인 상황을 잘 이해하지 못합니다. 일반적으로 *yaml.node 并在每个节点上调用 func unmarshalyaml(value *node) error를 수동으로 반복해야 한다고 가정합니다.

으아악

놀이공원 가기

Solution

type source struct {
    id     string `yaml:"id"`
    name   string `yaml:"name"`
    logoid string `yaml:"logoid"`
    url    string `yaml:"url"`
}

type unft struct {
    itemmeta map[string]map[interface{}]string `yaml:"item_meta"`
    // could be
    // itemmeta map[string]map[string]string `yaml:"item_meta"`
    // or
    // itemmeta map[string]map[source]string `yaml:"item_meta"`
}
로그인 후 복사

https://www.php.cn/link/50f9999b2ee27e222c5513e945e9ea9c

매핑된 유형을 변경하지 않고 유지해야 하는 경우(예: 사용자 정의 키 유형을 추가하지 않고) unft에서 언마샬러를 구현하고 any를 사용하여 다시 매핑할 수도 있습니다.

으아악

https://www.php.cn/link/543378fb36a83810ded2d725f2b6c883

위 내용은 YAML을 구조체나 문자열 등의 복잡한 개체로 역마샬링합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:stackoverflow.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!