【问题标题】:Convert map[string][]string into a yaml structure将 map[string][]string 转换为 yaml 结构
【发布时间】:2020-09-23 01:16:14
【问题描述】:

我尝试像这样将 make(map[string]string) 转换为 yaml:

Yaml 输出愿望:

items:
    keys1:value1
    keys2:value2
    keys3:value3
    keys4:value4

keys,values 就是这个 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))

说实话,我有点迷路了,谢谢你的帮助

【问题讨论】:

  • 丢失了怎么办?请显示您的所有代码,包括导入和示例数据。还显示所需的输出和你实际得到的。您的结构有一个字符串到字符串切片的映射,这看起来不像您期望的输出。

标签: dictionary go yaml


【解决方案1】:

要从您的帖子中获取确切的 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。

【讨论】:

    猜你喜欢
    • 2016-07-29
    • 2013-05-24
    • 2014-01-29
    • 1970-01-01
    • 1970-01-01
    • 2016-07-21
    • 1970-01-01
    • 2015-11-21
    • 2021-07-04
    相关资源
    最近更新 更多