Go语言实战案例:简易JSON数据返回

在现代 Web 应用中,JSON 已成为前后端通信的主流数据格式。Go 语言标准库内置对 JSON 的良好支持,只需少量代码就能返回结构化的 JSON 响应。

本篇案例将手把手带你完成一个「返回 JSON 数据的 HTTP 接口」,帮助你理解如何用 Go 语言实现后端服务最基础的功能。


一、目标说明

构建一个 HTTP 服务:

  • • 请求地址:/hello

  • • 请求方式:GET

  • • 返回内容:

    json 复制代码
    {
      "message": "Hello, Go!",
      "status": 200
    }

二、核心知识点

  • • net/http:Go 标准 HTTP 库
  • • encoding/json:JSON 编解码包
  • • http.ResponseWriter:响应写入器
  • • http.HandleFunc:注册处理函数

三、完整代码示例

go 复制代码
package main

import (
    "encoding/json"
    "net/http"
)

type Response struct {
    Message string `json:"message"`
    Status  int    `json:"status"`
}

func helloHandler(w http.ResponseWriter, r *http.Request) {
    // 设置返回头信息
    w.Header().Set("Content-Type", "application/json")
    w.WriteHeader(http.StatusOK)

    // 创建响应结构体
    resp := Response{
        Message: "Hello, Go!",
        Status:  200,
    }

    // 编码为 JSON 并写入响应
    json.NewEncoder(w).Encode(resp)
}

func main() {
    http.HandleFunc("/hello", helloHandler)
    http.ListenAndServe(":8080", nil)
}

四、运行与测试

1. 运行服务

go 复制代码
go run main.go

访问浏览器或使用 curl:

bash 复制代码
curl http://localhost:8080/hello

2. 响应结果

json 复制代码
{
  "message": "Hello, Go!",
  "status": 200
}

五、快速问答(FAQ)

✅ 为什么要设置 Content-Type: application/json?

告诉浏览器或客户端,我们返回的是 JSON 格式数据。

✅ json.NewEncoder(w).Encode(...) 做了什么?

它将结构体编码为 JSON 并直接写入到 ResponseWriter 输出流。

✅ 如果编码失败会发生什么?

Encode() 会返回 error,可以用 if err != nil 判断并手动写入 500 错误。


六、延伸练习

    1. 返回一个包含用户列表的 JSON 数组;
    1. 增加 POST 方法处理 JSON 请求体;
    1. 返回当前时间戳;
    1. 返回分页数据结构。

七、总结

本案例实现了一个 Go 最小可用的 JSON 接口:

✅ 使用标准库,无需第三方框架

✅ 面向新手,极易上手

✅ 为构建 RESTful API 打下基础


相关推荐
程序猿DD44 分钟前
OctaFuse Gateway 2.15.0:MCP 聚合、向量 Embeddings 与官方目录同步
后端·agent
余槐i3 小时前
PostgreSQL 函数索引报错 must be immutable:3种绕法与代价
数据库·后端·sql·postgresql·性能优化
需要8264 小时前
Spring Bean 生命周期:从实例化到销毁的完整钩子
java·后端·spring
凤山老林5 小时前
Spring Boot 接入国密 SM2/SM3/SM4 的一些实践记录
spring boot·后端·python
伯恩bourne6 小时前
Spring Boot Bean 注册的两种方式:@Component 家族 vs @Configuration + @Bean
java·spring boot·后端
张彦峰ZYF6 小时前
停顿短不等于延迟低:G1、ZGC 与低延迟服务的目标分野、代价账本与选型标定
后端·回收暂停、应用停止总时长·到达安全点、分配停滞·屏障吃吞吐、并发线程吃核心·并发窗口吃堆余量·分区式靠挑回收集兑现目标·染色指针式不支持压缩引用
pride.li6 小时前
第03章 Python 教程-基础语法:注释与变量
服务器·前端·后端·python·算法·计算机视觉
upala7 小时前
【仓颉语言入门 · 第二篇 第 6 课】
后端
罗丹丹Luna7 小时前
移动端显示“已提交”以后:SAP 与低代码集成该怎样暴露真实状态
后端·架构
码事漫谈7 小时前
因为太想讨好你,所以AI会骗你
后端