Golang Go语言中请教一个 json 转结构体的问题
json 如下
{
"pre1":{
"code":1
},
"pre2":{
"code":2
}
}
这个 json 文件有很多个 pre 的 key ,而且是动态添加的,这种的结构体如何构建呢?
Golang Go语言中请教一个 json 转结构体的问题
用数组保存 pre ,pre 里再加个字段保存每个 pre 的类型或者字段名,egjson<br>{<br> "pre":[<br> {<br> "type": "pre1",<br> "code": 1<br> },<br> {<br> "type": "pre2",<br> "code": 2<br> },<br> ....<br> ]<br>}<br>
更多关于Golang Go语言中请教一个 json 转结构体的问题的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
go<br>type Raw map[string]struct {<br> Code int64 `json:"code"`<br>}<br>
定义一个 map 就好啦
我也测试出来了这个,就是感觉有点割裂,不能像其他语言那样直接读取出来的吗?这样的 pre 感觉就是孤零零的一个键。
或者说 go 一般使用 json 做配置文件的时候通用的格式类似于什么样的?
其实我也一直在找这种类型的 json 最佳实现,看起来应该是 map 更好一点😂
多谢 我试试,不过读出来后把 pre 做 key ,其余的全部是 value 了,这样也不行。
不好意思,我的锅,写错了,现在可以了,多谢!
这不就是个数组
map 吧,不过因为我还要修改,所以还是用了 map[string]*struct 这种的。
在Golang中,将JSON数据转换为结构体是一个常见的操作,通常使用标准库中的encoding/json
包来实现。下面是一个基本的示例,展示了如何将JSON字符串解析为结构体:
首先,定义一个与JSON数据对应的结构体。例如,假设你的JSON数据如下:
{
"name": "Alice",
"age": 30,
"email": "alice@example.com"
}
你可以定义一个结构体来匹配这个JSON结构:
type Person struct {
Name string `json:"name"`
Age int `json:"age"`
Email string `json:"email"`
}
然后,使用json.Unmarshal
函数将JSON字符串解析为结构体实例:
package main
import (
"encoding/json"
"fmt"
)
func main() {
jsonData := `{"name": "Alice", "age": 30, "email": "alice@example.com"}`
var person Person
err := json.Unmarshal([]byte(jsonData), &person)
if err != nil {
fmt.Println("Error unmarshalling JSON:", err)
return
}
fmt.Printf("Unmarshalled Person: %+v\n", person)
}
在这个例子中,json.Unmarshal
接受一个字节切片和一个指向目标结构体的指针。如果JSON数据成功解析,目标结构体将被填充相应的值。如果解析过程中遇到错误,err
将包含错误详情。
确保JSON字段名称与结构体标签匹配,这样json.Unmarshal
才能正确地将JSON数据映射到结构体字段。