Golang Go语言中请教一个 json 转结构体的问题

发布于 1周前 作者 sinazl 来自 Go语言

json 如下

{
    "pre1":{
        "code":1
    },
    "pre2":{
        "code":2
    }
}

这个 json 文件有很多个 pre 的 key ,而且是动态添加的,这种的结构体如何构建呢?


Golang Go语言中请教一个 json 转结构体的问题
10 回复

用数组保存 pre ,pre 里再加个字段保存每个 pre 的类型或者字段名,eg
json<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数据映射到结构体字段。

回到顶部