dictionary - 将map [string] [] string转换为yaml结构

标签 dictionary go yaml

我尝试像这样将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/

相关文章:

Python:查找其值在字典中具有最大绝对值的键

vba - 使用索引/项目编号循环遍历 Scripting.Dictionary

java - Jetty '{servlet}/{parameter}' url路由

macos - 找不到-ltensorflow

azure - 如何从azure devops yaml管道中的工件中查找runID

javascript - 如何从 JavaScript 列表中检查单词相似度(无需循环遍历整个字典)?

go - Golang 结构中的属性未被修改

go - 发送udp包时如何设置源端口

curl - 如何在 Travis-CI 配置文件 (YAML) 中正确使用 curl?

java - 当从外部 yaml 文件引用响应时出现 NPE