gpt4 book ai didi

json - 将嵌套的 JSON 解析为结构?

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

我想解析以下 JSON 输出:

{
"total":5689,
"result":{
"6581":{
"percent":37.79,
"count":2150
},
"6591":{
"percent":35.31,
"count":2009
},
"6601":{
"percent":26.89,
"count":1530
}
}
}

我读过,如果格式已知,可以将 JSON 解析为结构:

package main

import (
"encoding/json"
"fmt"
"os"
)

type VoteResult struct {
Total int `json:"total"`
Result struct {
Efid1 struct {
Percent float64 `json:"percent"`
Count int `json:"count"`
}
Efid2 struct {
Percent float64 `json:"percent"`
Count int `json:"count"`
}
Efid3 struct {
Percent float64 `json:"percent"`
Count int `json:"count"`
}
}
}

func main() {
b := []byte(`{"total":5689,"result":{"6581":{"percent":37.79,"count":2150}
,"6591":{"percent":35.31,"count":2009},"6601":{"percent":26.89,"count":1530}}}`)

var v VoteResult

err := json.Unmarshal(b, &v)
if err != nil {
fmt.Fprintf(os.Stderr, "%v\n", err)
os.Exit(1)
}

fmt.Println(v)
}

Go Playground

这是输出,但由于嵌套结构未填充数据而出现问题:

{5689 {{0 0} {0 0} {0 0}}}

我做错了什么?

最佳答案

JSON 的result 部分是一个将字符串映射到对象的字典。试试这个(https://play.golang.org/p/BCNHw-OH2I):

type VoteResult struct {
Total int `json:"total"`
Result map[string]struct {
Percent float64 `json:"percent"`
Count int `json:"count"`
}
}

编辑

作为替代方案,如果这些字符串确实是固定的,您可以这样做:

type VoteResult struct {
Total int `json:"total"`
Result struct {
Efid1 struct {
Percent float64 `json:"percent"`
Count int `json:"count"`
} `json:"6581"`
Efid2 struct {
Percent float64 `json:"percent"`
Count int `json:"count"`
} `json:"6591"`
Efid3 struct {
Percent float64 `json:"percent"`
Count int `json:"count"`
} `json:"6601"`
}
}

这里我们刚刚确定 Efid1 具有 JSON 键 6591 等。但我怀疑字符串到结构的映射更适合数据结构你有。

关于json - 将嵌套的 JSON 解析为结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38578656/

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