Golang返回仅包含"id"的问题如何解决

Golang返回仅包含"id"的问题如何解决 id

你好,我遇到了一个问题。我正在学习Go语言,并尝试创建一个旅馆API。但每次我使用Postman时,都只返回id值,其他字段都没有显示出来。我想知道我哪里出错了。

12 回复

非常感谢

更多关于Golang返回仅包含"id"的问题如何解决的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


这是我的日志错误 hh

您无条件地使用 log.Fatal(err)。假设您使用的是 Go 标准库中的 log 包,这意味着将无条件地退出您的程序。

func main() {
    fmt.Println("hello world")
}

表名为 rooms。

gg

你好,你知道为什么这个代码没有返回所有学生的列表吗?

allst

我在 Postman 上收到了错误:read ECONNRESET?

我们能看看响应那个API请求的代码吗?

在你的截图中,你调用的是 log.Fatal(err),而不是你的 logFatal 函数。log.Fatal 在被调用时会中止 goroutine,因此你的行数据永远不会被扫描。

func main() {
    fmt.Println("hello world")
}

ebube2020:

为什么这没有返回所有学生的列表

image

你请求了学生数据吗?

Go 不使用 publicprivate 这类关键字来区分标识符(字段、函数、类型等)的可访问性;大写字母开头的名称是公开的,小写字母开头的是私有的。问题在于你的字段名称都以小写字母开头,因此 json 包除了 ID 字段外,无法看到任何其他字段。请将你的字段重命名为以大写字母开头。

func main() {
    fmt.Println("hello world")
}

从你提供的截图来看,问题很可能出在结构体字段的可见性或JSON标签上。在Go中,只有首字母大写的字段才能被外部包(如encoding/json)访问和序列化。此外,你可能没有正确使用JSON标签来指定字段名。

以下是一个示例,展示如何定义结构体以确保所有字段都能正确序列化为JSON:

package main

import (
    "encoding/json"
    "fmt"
)

// 定义结构体,字段首字母大写,并添加JSON标签
type Hotel struct {
    ID          int    `json:"id"`
    Name        string `json:"name"`
    Description string `json:"description"`
    Price       int    `json:"price"`
}

func main() {
    // 创建Hotel实例
    hotel := Hotel{
        ID:          1,
        Name:        "示例酒店",
        Description: "这是一个示例酒店",
        Price:       100,
    }

    // 序列化为JSON
    jsonData, err := json.Marshal(hotel)
    if err != nil {
        fmt.Println("JSON序列化错误:", err)
        return
    }

    // 输出JSON字符串
    fmt.Println(string(jsonData))
}

运行上述代码将输出:

{"id":1,"name":"示例酒店","description":"这是一个示例酒店","price":100}

如果你的结构体字段是小写开头,或者缺少JSON标签,json.Marshal()将无法访问这些字段,导致只序列化可访问的字段(如ID)。请检查你的结构体定义,确保所有需要返回的字段都满足以下条件:

  1. 首字母大写(公开字段)
  2. 正确添加JSON标签(如json:"name"

如果你的结构体定义正确,但问题仍然存在,请检查是否在序列化前修改了字段值,或使用了错误的结构体实例。

回到顶部