1 回答

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超2個(gè)贊
首先關(guān)閉
我希望您遇到的問(wèn)題是沒(méi)有使用標(biāo)簽。要解析 JSON,結(jié)構(gòu)的名稱必須與 JSON 字段中的名稱匹配。在這里閱讀Golang Marshal
其次 wfMetadata 有一個(gè)小寫(xiě)的第一個(gè)字母,這意味著它不會(huì)被導(dǎo)入。
第三,
workflow.metadata
andworkflow.items[i].spec.arguments
被設(shè)置為 a{}
而不是 emptystring""
。我認(rèn)為他們不應(yīng)該是string
。interface{}
如果您不知道或不關(guān)心,則可以使用 open 來(lái)避免這種情況,或者使用您要連接的 API 中的官方文檔實(shí)際實(shí)現(xiàn)它們。作為說(shuō)明,使用
[]struct
對(duì)我來(lái)說(shuō)似乎是錯(cuò)誤的。而是在用法中定義它
請(qǐng)注意,通過(guò)使用像jetbrains 的 GoLand這樣的 IDE,他們首先支持通過(guò)簡(jiǎn)單地將 JSON 粘貼到
.go
文件中來(lái)將 JSON 轉(zhuǎn)換為結(jié)構(gòu)。他們一開(kāi)始可能會(huì)讓人望而生畏,但確實(shí)有很大幫助,并且會(huì)在幾秒鐘內(nèi)為您完成大部分工作。
現(xiàn)在試試這個(gè),并了解為什么以及如何更好地工作。
type Status struct {
Phase string `json:"phase"`
StartedAt string `json:"startedAt"`
FinishedAt string `json:"finishedAt"`
}
type ItemMetadata struct {
Name string `json:"name"`
Namespace string `json:"namespace"`
UID string `json:"uid"`
CreationTimestamp string `json:"creationTimestamp"`
}
type Items struct {
Metadata ItemMetadata `json:"metadata"`
Status Status `json:"status"`
Spec interface{} `json:"spec"`
}
type Workflow struct {
Metadata interface{} `json:"metadata"`
Items []Items `json:"items"`
}
操場(chǎng)上的工作示例https://go.dev/play/p/d9rT4FZJsGv
- 1 回答
- 0 關(guān)注
- 136 瀏覽
添加回答
舉報(bào)