当前位置: 首页 > news >正文

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

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

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


一、目标说明

构建一个 HTTP 服务:

  • • 请求地址:/hello
  • • 请求方式:GET
  • • 返回内容:
    {"message": "Hello, Go!","status": 200
    }

二、核心知识点

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

三、完整代码示例

package mainimport ("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 run main.go

访问浏览器或使用 curl

curl http://localhost:8080/hello
2. 响应结果
{"message": "Hello, Go!","status": 200
}

五、快速问答(FAQ)

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

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

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

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

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

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


六、延伸练习

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

七、总结

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

✅ 使用标准库,无需第三方框架
✅ 面向新手,极易上手
✅ 为构建 RESTful API 打下基础


http://www.dtcms.com/a/320902.html

相关文章:

  • Linux多线程——生产者消费者模型
  • 芯科科技成为全球首家通过PSA 4级认证的物联网芯片厂商巩固其在物联网安全领域的领导地位
  • 从零开始构建【顺序表】:C语言实现与项目实战准备
  • 《汇编语言:基于X86处理器》第12章 浮点数处理与指令编码(2)
  • 【JavaEE】(10) JavaEE 简介
  • 虚幻基础:场景actor与角色的碰撞
  • 走进Linux世界:make和makefile
  • 深入浅出线程池ThreadPoolExecutor
  • 机器人焊机智能流量调节
  • SwiftUI中的键盘快捷键、初始页面控制及网络权限管理解析
  • linux-LVM 逻辑卷管理
  • Windows域控制器部署最佳实践
  • (1-9-1) Maven 特性、安装、配置、打包
  • 安全扫描:检测到目标站点存在javascript框架库漏洞问题(vue)
  • DQL 超维分析 - 5 集算器 DQL
  • 【网络】TCP/UDP协议
  • 通过上下文工程优化LangChain AI Agents(二)
  • 佳维视高亮度工业显示器,强光环境清晰可见
  • 从深度伪造到深度信任:AI安全的三场攻防战
  • 饿了么零售 sign 分析
  • WPF 动画卡顿
  • 技术速递|GPT-5 正式上线 Azure AI Foundry
  • [激光原理与应用-176]:测量仪器 - 频谱型 - AI分类与检测相对于传统算法的优缺点分析
  • 人工智能与智能家居:家居生活的变革
  • sqlite的sql语法与技术架构研究
  • 安装向量数据库chromadb
  • GPT-5测试后全面解析:性能突破、用户反馈与未来展望
  • 若依前后端分离版学习笔记(七)—— Mybatis,分页,数据源的配置及使用
  • 前后端日期交互方案|前端要传时间戳还是字符串?后端接收时是用Long还是Date还是String?
  • Baumer相机如何通过YoloV8深度学习模型实现危险区域人员的实时检测识别(C#代码UI界面版)