MST

星途 面试题库

面试题:Go中处理复杂JSON结构

假设你有一个复杂的JSON结构,如下:`{"students":[{"name":"Alice","scores":{"math":85,"english":90}},{"name":"Bob","scores":{"math":78,"english":82}}]}`。请编写Go代码,定义合适的结构体,并将上述JSON反序列化到该结构体中,同时将反序列化后的结构体再序列化为JSON格式字符串输出,且要处理可能出现的JSON解析错误。
42.6万 热度难度
编程语言Go

知识考点

AI 面试

面试题答案

一键面试
package main

import (
    "encoding/json"
    "fmt"
)

// 定义学生成绩结构体
type Scores struct {
    Math    int `json:"math"`
    English int `json:"english"`
}

// 定义学生结构体
type Student struct {
    Name   string `json:"name"`
    Scores Scores `json:"scores"`
}

// 定义包含学生列表的结构体
type Students struct {
    Students []Student `json:"students"`
}

func main() {
    jsonStr := `{"students":[{"name":"Alice","scores":{"math":85,"english":90}},{"name":"Bob","scores":{"math":78,"english":82}}]}`

    var students Students
    err := json.Unmarshal([]byte(jsonStr), &students)
    if err != nil {
        fmt.Printf("JSON解析错误: %v\n", err)
        return
    }

    newJsonStr, err := json.MarshalIndent(students, "", "  ")
    if err != nil {
        fmt.Printf("JSON序列化错误: %v\n", err)
        return
    }

    fmt.Println(string(newJsonStr))
}