我尝试像这样将make(map [string] string)转换为 yaml :
Yaml输出需求:
items:
keys1:value1
keys2:value2
keys3:value3
keys4:value4
键,值是此listKey字符串映射。 J =字符串= {“” key1“:” value1“,” key2“:” value2“}
type Items struct {
items string
ItemsValues map[string][]string
}
func ConvertToYelm(j string){
y := Items{}
var dataJson map[string]string
err := json.Unmarshal([]byte(j), &dataJson)
if err != nil {
fmt.Println(err)
return
}
listKey := make(map[string]string)
for k := range dataJson{
listKey[k] = k
}
yelm, err := yaml.Marshal(listKey)
if err != nil {
fmt.Println(err)
return
}
err = yaml.Unmarshal(yelm, Items)
if err != nil {
fmt.Println(err)
return
}
yeml2, err := yaml.Marshal(&yelm)
fmt.Printf ("%s", string(yeml2))
老实说,我在这里有点迷路,谢谢您的帮助
最佳答案
要从您的帖子中获取确切的YAML:
items:
keys1:value1
keys2:value2
keys3:value3
keys4:value4
您可以这样做(Go Playground):
package main
import (
"fmt"
"gopkg.in/yaml.v2"
)
type ItemsStruct struct {
Items map[string]string `yaml:"items"`
}
func main() {
itms := &ItemsStruct{Items: map[string]string{
"keys1": "value1",
"keys2": "value2",
"keys3": "value3",
"keys4": "value4"}}
yamlBytes, err := yaml.Marshal(itms)
if err != nil {
//handle error
}
fmt.Println(string(yamlBytes))
}
补充一下,我看到您的代码正在解码此JSON
{"key1":"value1", "key2":"value2", ... }
,然后以您指定的格式将其编码为YAML。这是Go Playground。
关于dictionary - 将map [string] [] string转换为yaml结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62188111/