Go YAML 구조체 없이 맵에 Unmarshal

Jmnote (토론 | 기여)님의 2024년 6월 13일 (목) 00:31 판
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)

1 개요[ | ]

Go YAML 구조체 없이 맵에 Unmarshal
Go YAML 구조체 없이 맵으로 Unmarshal
package main

import (
	"fmt"

	"gopkg.in/yaml.v2"
)

const yamlString = `
clouds:
  devstack:
    auth:
      auth_url: http://192.168.122.10:35357/
      project_name: demo
      username: demo
      password: 0penstack
`

func main() {
	m := make(map[string]interface{})
	err := yaml.Unmarshal([]byte(yamlString), m)
	if err != nil {
		panic(err)
	}
	fmt.Printf("%#v\n", m)
}
package main

import (
	"fmt"

	"gopkg.in/yaml.v2"
)

const yamlString = `
clouds:
  devstack:
    auth:
      auth_url: http://192.168.122.10:35357/
      project_name: demo
      username: demo
      password: 0penstack
`

func main() {
	m := make(map[string]map[string]interface{})
	err := yaml.Unmarshal([]byte(yamlString), m)
	if err != nil {
		panic(err)
	}
	if _, ok := m["clouds"]; !ok {
		panic("no clouds")
	}
	var cloudName string
	for k := range m["clouds"] {
		cloudName = k
		break
	}
	fmt.Println(cloudName) // devstack
}

2 같이 보기[ | ]

3 참고[ | ]

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}