2 回答

TA贡献1803条经验 获得超3个赞
这是一个很棒的服务,你可以用它来为你的yamls制作结构。这是其工作的结果。
type AutoGenerated struct {
APIVersion string `yaml:"apiVersion"`
Entries struct {
Alpine []struct {
Created struct {
} `yaml:"created"`
Description string `yaml:"description"`
Digest string `yaml:"digest"`
Home string `yaml:"home"`
Name string `yaml:"name"`
Sources []string `yaml:"sources"`
Urls []string `yaml:"urls"`
Version string `yaml:"version"`
} `yaml:"alpine"`
Nginx []struct {
Created struct {
} `yaml:"created"`
Description string `yaml:"description"`
Digest string `yaml:"digest"`
Home string `yaml:"home"`
Name string `yaml:"name"`
Sources []string `yaml:"sources"`
Urls []string `yaml:"urls"`
Version string `yaml:"version"`
} `yaml:"nginx"`
} `yaml:"entries"`
Generated struct {
} `yaml:"generated"`
}
var doc AutoGenerated
err := yaml.Unmarshal([]byte(index_yaml), &doc)
if err != nil {
log.Fatalf("error: %v", err)
return
}
fmt.Printf("Doc: %+v", doc)
您可以根据需要添加,或根据需要更改结构。omitempty
更新:
package main
import (
"fmt"
"log"
"gopkg.in/yaml.v2"
)
type Entry struct {
Created string `yaml:"created"`
Description string `yaml:"description"`
Digest string `yaml:"digest"`
Home string `yaml:"home"`
Name string `yaml:"name"`
Sources []string `yaml:"sources"`
Urls []string `yaml:"urls"`
Version string `yaml:"version"`
}
type AutoGenerated struct {
APIVersion string `yaml:"apiVersion"`
Entries map[string][]Entry `yaml:"entries"`
Generated string `yaml:"generated"`
}
func main() {
var doc AutoGenerated
err := yaml.Unmarshal([]byte(index_yaml), &doc)
if err != nil {
log.Fatalf("error: %v", err)
return
}
fmt.Printf("Doc: %+v", doc)
}
const index_yaml = `apiVersion: v1
entries:
alpine:
- created: 2016-10-06T16:23:20.499814565-06:00
description: Deploy a basic Alpine Linux pod
digest: 99c76e403d752c84ead610644d4b1c2f2b453a74b921f422b9dcb8a7c8b559cd
home: https://helm.sh/helm
name: alpine
sources:
- https://github.com/helm/helm
urls:
- https://technosophos.github.io/tscharts/alpine-0.2.0.tgz
version: 0.2.0
- created: 2016-10-06T16:23:20.499543808-06:00
description: Deploy a basic Alpine Linux pod
digest: 515c58e5f79d8b2913a10cb400ebb6fa9c77fe813287afbacf1a0b897cd78727
home: https://helm.sh/helm
name: alpine
sources:
- https://github.com/helm/helm
urls:
- https://technosophos.github.io/tscharts/alpine-0.1.0.tgz
version: 0.1.0
nginx:
- created: 2016-10-06T16:23:20.499543808-06:00
description: Create a basic nginx HTTP server
digest: aaff4545f79d8b2913a10cb400ebb6fa9c77fe813287afbacf1a0b897cdffffff
home: https://helm.sh/helm
name: nginx
sources:
- https://github.com/helm/charts
urls:
- https://technosophos.github.io/tscharts/nginx-1.1.0.tgz
version: 1.1.0
generated: 2016-10-06T16:23:20.499029981-06:00`

TA贡献1811条经验 获得超6个赞
首先,您必须修改 yaml 输入的缩进,然后根据建议修改 from 到:Entry Entriesyaml:"entry"yaml:"entries"
package main
import (
"fmt"
"log"
"gopkg.in/yaml.v2"
)
const index_yaml = `apiVersion: v1
entries:
alpine:
- created: 2016-10-06T16:23:20.499814565-06:00
description: Deploy a basic Alpine Linux pod
digest: 99c76e403d752c84ead610644d4b1c2f2b453a74b921f422b9dcb8a7c8b559cd
home: https://helm.sh/helm
name: alpine
sources:
- https://github.com/helm/helm
urls:
- https://technosophos.github.io/tscharts/alpine-0.2.0.tgz
version: 0.2.0
- created: 2016-10-06T16:23:20.499543808-06:00
description: Deploy a basic Alpine Linux pod
digest: 515c58e5f79d8b2913a10cb400ebb6fa9c77fe813287afbacf1a0b897cd78727
home: https://helm.sh/helm
name: alpine
sources:
- https://github.com/helm/helm
urls:
- https://technosophos.github.io/tscharts/alpine-0.1.0.tgz
version: 0.1.0
nginx:
- created: 2016-10-06T16:23:20.499543808-06:00
description: Create a basic nginx HTTP server
digest: aaff4545f79d8b2913a10cb400ebb6fa9c77fe813287afbacf1a0b897cdffffff
home: https://helm.sh/helm
name: nginx
sources:
- https://github.com/helm/charts
urls:
- https://technosophos.github.io/tscharts/nginx-1.1.0.tgz
version: 1.1.0
generated: 2016-10-06T16:23:20.499029981-06:00`
type Entry struct {
Created string `yaml:"created"`
Description string `yaml:"description"`
Home string `yaml:"home"`
}
type Entries map[string][]Entry
type Index struct {
ApiVersion string `yaml:"apiVersion"`
Entry Entries `yaml:"entries"`
Generated string `yaml:"generated"`
}
func main() {
var index Index
err := yaml.Unmarshal([]byte(index_yaml), &index)
if err != nil {
log.Fatal("File reading error", err)
return
}
fmt.Printf("Index: %+v", index)
}
输出:
Index: {ApiVersion:v1 Entry:map[alpine:[{Created:2016-10-06T16:23:20.499814565-06:00 Description:Deploy a basic Alpine Linux pod Home:https://helm.sh/helm} {Created:2016-10-06T16:23:20.499543808-06:00 Description:Deploy a basic Alpine Linux pod Home:https://helm.sh/helm}] nginx:[{Created:2016-10-06T16:23:20.499543808-06:00 Description:Create a basic nginx HTTP server Home:https://helm.sh/helm}]] Generated:2016-10-06T16:23:20.499029981-06:00}
- 2 回答
- 0 关注
- 105 浏览
添加回答
举报