>  기사  >  백엔드 개발  >  YAML을 구조체나 문자열 등의 복잡한 개체로 역마샬링합니다.

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

WBOY
WBOY앞으로
2024-02-09 08:48:29909검색

将 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으로 문의하시기 바랍니다. 삭제