当前位置: 首页 > 知识库问答 >
问题:

如何用任意键解析YAML[重复]

弓温书
2023-03-14

我正在尝试读取类似于我在Python中所做的YAML文件。但是我不知道如何使用任意键。我有以下我想阅读的YAML:

apple:
  name: item1
banana:
  name: item2

我知道如何读取文件,但只能使用空接口。我想把它作为我的项目类型的映射读入。

package main

import (
    "fmt"
    "log"
    "gopkg.in/yaml.v2"
)

type Item struct {
    Name string `yaml:"name"`
}

func main() {
    input := `
  apple:
    name: item1
  banana:
    name: item2`

    m := make(map[interface{}]interface{})

    err := yaml.Unmarshal([]byte(input), &m)
    if err != nil {
        log.Fatalf("error: %v", err)
    }
    fmt.Printf("%v \n", m)
}

我在Stdout中得到的内容:

map[apple:map[name:item1] banana:map[name:item2]]

我想看到的是:

map[apple:{item1} banana:{item2}] 

如何将我的 YAML 文件读入项目地图?

共有2个答案

翟默
2023-03-14

应该使用< code > m:= make(map[string]Item)。

公羊涛
2023-03-14

为了使解组按照您想要的方式工作,您应该提供指令。在您的情况下,如果您不想在映射中命名,请提供一个结构来散集。

所以 m := make(map[interface{}]interface{}) 应该更改为 m := make(map[string]Item)

package main

import (
    "fmt"
    "log"
    "gopkg.in/yaml.v2"
)

type Item struct {
    Name string `yaml:"name"`
}

func main() {
    input := `
  apple:
    name: item1
  banana:
    name: item2`

    m := make(map[string]Item)

    err := yaml.Unmarshal([]byte(input), &m)
    if err != nil {
        log.Fatalf("error: %v", err)
    }
    fmt.Printf("%v \n", m)
}

输出: 地图[苹果:{item1} 香蕉:{item2}]

 类似资料:
  • 我有一个带有属性映射的YAML配置文件: 引导将解析为: 下面的实际示例。 : 对结果对象调用:

  • 问题内容: 我正在尝试使用Go解析YAML文件。问题在于YAML文件中的密钥可能并不总是相同。这是为了进行API版本控制,以便用户可以定义他们支持的版本。例如V1,V2,V3等。它们不需要按顺序排列,并且可以省略它们不支持的版本,例如V0,V2,V5等。 这是最高层,我还没有从结构内部弄清楚如何做到这一点。 问题答案: 首先,您尝试将根解析为,但其实际类型为。其次,如果要保留该类型结构,则需要一个

  • 我正在尝试使用 Go 解析 YAML 文件。问题是 YAML 文件中的键可能并不总是相同的。这是为了执行 API 版本控制,以便用户可以定义他们支持的版本。例如 V1、V2、V3 等。它们不需要按顺序排列,可以省略它们不支持的版本,即 V0、V2、V5 等。 我在这里看到一个类似的问题 这是顶层,我还没有完全弄清楚如何从结构内部执行此操作。

  • 问题内容: 我想用Android上的任何键解析JSON。JSON数据包含任何键,数组或值。这是JSON数据和我的工作代码。我想通过使用JSON解析将JSON数据放入类中。 JSON数据: 我的代码: 请帮我。 问题答案: 是的,这是可能的。 将收到的JSON放在中。您可以循环通过并从中退出。 例: 我希望这就是你想要的

  • 问题内容: 我将如何在Python中“按任意键”(或抓住菜单选项)? raw_input要求您按回车键。 Windows msvcrt具有getch()和getche()。 有使用标准库执行此操作的可移植方法吗? 问题答案:

  • 问题内容: 如何在Python中解析YAML文件? 问题答案: 不依赖标头的最简单,最纯净的方法是(文档),可以通过以下方式安装: 就是这样。一个普通的函数也存在,但是除非你明确需要提供的任意对象序列化/反序列化,以避免引入执行任意代码的可能性,否则通常应首选该函数。