gpt4 book ai didi

json - 解析嵌套的 json 文件

转载 作者:IT王子 更新时间:2023-10-29 01:56:27 25 4
gpt4 key购买 nike

我正在解析一个结构不寻常的 JSON 文件,如下所示:

{
"394885":
{
"record":
{
"student_name": "Daryl Jones",
"student_number": 123884,
"student_dob": "12/10/1982",
"student_email": "djones@school.ac.uk",
}
},
}

我一直在研究一些代码演示,但我想将它们全部放入一个结构中,然后我计划通过我猜的对象名称的数字字符串来搜索它?

我不擅长 JSON 或 Go,这是我目前编写的代码:

package main

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

type id struct {
recordid string
record []record
}

type record struct {
name string
number uint32
dob string
email string
}

func main() {
jsonFile, err := os.Open("/home/emyrw/development/go/src/json_processor/demo.json")
if err != nil {
fmt.Println(err)
} else {
var records id

byteValue, _ := ioutil.ReadAll(jsonFile)
json.Unmarshal(byteValue, &records)
fmt.Println(records)

fmt.Println("opened demo.json")
defer jsonFile.Close()
}
}

我不确定我是否做对了,但会重视任何人提供的任何提示或建议。我一直在谷歌搜索,但我发现没有一个样本非常适合我的场景。

最佳答案

首先,您的 JSON 无效。与 GoLang 结构不同,您不需要在最终对象之后放置 ,

{ “394885”: { “记录”: { “student_name”:“达里尔·琼斯”, “学号”:123884, “student_dob”:“12/10/1982”, “student_email”:“djones@school.ac.uk”
}

其次,var records 应该完全按照 JSON 对象中的命名方式命名结构中的字段,或者使用属性来准确地对 JSON 建模。

你的JSON的外部不是id类型,而是map[string]id类型

id 没有 recordid 字段,但是它有一个 record 字段,但是,您的结构的字段必须如果您想将 JSON 序列化到它们中,则可以导出(从大写字母开始)。

这是属性派上用场的地方,

type id struct {
Record []record `json:"record"`
}

record 结构相同,

type record struct {
Name string `json:"student_name"`
Email string `json:"student_email"`
// You get the idea...
}

第三,在打开文件后立即放置 defer 语句,将它放在 block 的末尾会破坏目的。

关于json - 解析嵌套的 json 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54971678/

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