gpt4 book ai didi

json - 手动读取 JSON 值

转载 作者:IT王子 更新时间:2023-10-29 00:42:02 25 4
gpt4 key购买 nike

在 Go 中,我通常将我的 JSON 解码为一个结构并从该结构中读取值。它工作得很好。

这次我只关心 JSON 对象的某个元素,因为整个 JSON 对象非常大,所以我不想创建结构。

在 Go 中有没有一种方法可以让我可以像往常一样使用键或迭代数组在 JSON 对象中查找值。

考虑到以下 JSON,我如何才能仅提取 title 字段。

{
"title": "Found a bug",
"body": "I'm having a problem with this.",
"assignee": "octocat",
"milestone": 1,
"labels": [
"bug"
]
}

最佳答案

不要声明不需要的字段。

https://play.golang.org/p/cQeMkUCyFy

package main

import (
"fmt"
"encoding/json"
)

type Struct struct {
Title string `json:"title"`
}

func main() {
test := `{
"title": "Found a bug",
"body": "I'm having a problem with this.",
"assignee": "octocat",
"milestone": 1,
"labels": [
"bug"
]
}`

var s Struct
json.Unmarshal([]byte(test), &s)

fmt.Printf("%#v", s)

}

或者如果你想完全摆脱结构:

var i interface{}
json.Unmarshal([]byte(test), &i)

fmt.Printf("%#v\n", i)
fmt.Println(i.(map[string]interface{})["title"].(string))

或者。它将吞下所有转换错误。

m := make(map[string]string)

json.Unmarshal([]byte(test), interface{}(&m))

fmt.Printf("%#v\n", m)
fmt.Println(m["title"])

关于json - 手动读取 JSON 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37681419/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com