MST

星途 面试题库

面试题:Go语言中JSON序列化与反序列化优化之基础

在Go语言中,给定一个结构体,如何使用标准库进行JSON序列化?请举例说明,并阐述如果结构体字段名与JSON字段名不一致时,如何处理?
50.1万 热度难度
编程语言Go

知识考点

AI 面试

面试题答案

一键面试
  1. 使用标准库进行JSON序列化示例

    package main
    
    import (
        "encoding/json"
        "fmt"
    )
    
    type Person struct {
        Name string `json:"name"`
        Age  int    `json:"age"`
    }
    
    func main() {
        p := Person{
            Name: "Alice",
            Age:  30,
        }
    
        data, err := json.Marshal(p)
        if err!= nil {
            fmt.Println("Marshal error:", err)
            return
        }
        fmt.Println(string(data))
    }
    

    在上述代码中,首先定义了一个Person结构体,然后使用json.Marshal函数将Person结构体实例p序列化为JSON格式的字节切片。如果序列化成功,将其转换为字符串并打印。

  2. 结构体字段名与JSON字段名不一致时的处理: 在Go语言中,通过结构体标签(struct tag)来处理这种情况。例如在上述Person结构体中,Name字段对应的JSON字段名为nameAge字段对应的JSON字段名为age。结构体标签json:"field_name"中的field_name就是在JSON序列化和反序列化时使用的字段名。这样即使Go结构体中的字段名和JSON中的字段名不一致,也能正确地进行转换。例如,如果JSON数据中的字段名是"name",而Go结构体中定义为FullName,可以这样写:

    type Person struct {
        FullName string `json:"name"`
        Age      int    `json:"age"`
    }
    

    这样在序列化和反序列化时,FullName字段就会对应JSON中的"name"字段。