当前位置: 首页 > 面试题库 >

将YAML解组为struct

漆雕稳
2023-03-14
问题内容

我正在尝试将YAML数据解析为字符串:

package main

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

type Config struct {
    foo_bar string
}

func FailOnError(err error, msg string) {
    if err != nil {
        log.Fatalf("%s: %s", msg, err)
        panic(fmt.Sprintf("%s: %s", msg, err))
    }
}

func ParseYAMLConfig(data []byte) *Config {
    config := Config{}

    err := yaml.Unmarshal(data, &config)
    if err != nil {
        FailOnError(err, "Failed to unmarshal the config")
    }

    return &config
}

var configYAMLData = `
---
foo_bar: "https://foo.bar"
`

func main() {
    config := ParseYAMLConfig([]byte(configYAMLData))
    fmt.Printf("%v", config)
}

由于某种原因,config是一个空结构&{}。


问题答案:

您的结构的字段未导出。导出它们,它将起作用。

type Config struct {
    FooBar string `yaml:"foo_bar"`
}


 类似资料:
  • 我正在尝试将以下YAML数据分解为Go结构。 数据采用以下格式: 根据类型字段,我想确定是否将配置字段解组到awsConfig或kubernetesConfig结构中。 我当前的代码如下(使用“gopkg.in/yaml.v2”): 操场代码:https://go.dev/play/p/klxOoHMCtnG 目前它被解组为 map[接口 {}]接口 {},无法转换为上述结构之一。错误:panic

  • 问题内容: 我正在尝试解组以下YAML(使用gopkg.in/yaml.v2): 使用以下代码: 但这给了我以下错误: 顶级属性是动态的,因此我需要将它们解析为字符串,结构中的所有其他键将始终相同,因此这些部分的结构也是如此。我该如何解析? (完整代码位于https://github.com/tirithen/unit- conversion/blob/master/convert.go#L84

  • 我收到一个YAML文件,我使用snakeyaml引擎解析(对于YAML 1.2)。 然后我使用GSON将其转换为JsonObject。 我们的目标是运行这个YAML,对照已知的数据模型检查它。如果字段不同,必填字段丢失等,我必须为每个字段返回一个错误。我们的目标是找到某种方法来包含原始YAML中问题字段的行号,但是当我通过JSON进行验证时,遇到错误时,我不知道原始行号。我很好奇,是否有一些简单的

  • 问题内容: 我想在Java中使用斜杠(例如)来解析描述性网址。 我的总体想法是处理接收到的数据以在数据库中进行查找(因此使用URL作为搜索条件),然后返回包含数据的HTML页面。 我该怎么做呢? 问题答案: 您将拥有一个可以使用的字符串数组。

  • 问题内容: 我得到以下数据: 通过websocket,我想将其解组到 使用以下命令解组它: 但我不断收到错误: json:无法将字符串解组到类型为feed.OrderBookItem的Go结构字段OrderBookResult.bids中 当我将结构更改为 有用。我希望将它们定义为它们是什么。我必须改变什么? 问题答案: 如错误所示: json:无法将字符串解组到类型为feed.OrderBook

  • 问题内容: 我想将此yaml字符串转换为json,因为源数据是动态的,所以我无法将其映射到结构: 然后我想再次将该接口转换为json字符串: 但是发生错误: 问题答案: 前言: 我优化并改进了以下解决方案,并将其作为库发布在这里:。以下功能可作为。 问题在于,如果您使用最通用的类型来解组,则包用于解组键- 值对的默认类型将是。 第一个想法是使用: 但是,如果yaml配置的深度大于一,则此尝试将失败