首页 > 后端开发 > Golang > 正文

Golang如何处理JSON请求和响应

P粉602998670
发布: 2025-10-14 14:26:01
原创
706人浏览过
Go语言通过encoding/json和net/http包处理JSON,定义结构体时使用json标签(如json:"name")控制字段映射,omitempty可忽略空值;解析请求时用json.NewDecoder读取r.Body并解码到结构体,需错误处理并关闭Body;返回响应时设置Content-Type为application/json,用json.NewEncoder将数据编码写入响应;完整示例展示接收用户数据、赋ID后返回JSON结果,标准库即可构建可靠JSON接口。

golang如何处理json请求和响应

Go语言处理JSON请求和响应非常直接,主要依赖标准库中的 encoding/jsonnet/http 包。只要结构体字段正确标记,就能轻松完成序列化与反序列化。

定义结构体并使用JSON标签

要让Go能正确解析或生成JSON,需为结构体字段添加json标签。这些标签控制字段在JSON中的名称,并支持忽略空值等行为。

例如:
type User struct {
    ID   int    `json:"id"`
    Name string `json:"name"`
    Email string `json:"email,omitempty"`
}
登录后复制

其中omitempty表示如果Email为空,JSON输出中将省略该字段。

解析JSON请求(反序列化)

客户端发来的JSON数据通常通过http.Request.Body读取,使用json.NewDecoderjson.Unmarshal转为结构体。

立即学习go语言免费学习笔记(深入)”;

常见做法:
  • 声明目标结构体变量
  • 调用json.NewDecoder(r.Body).Decode(&data)
  • 记得关闭Body:defer r.Body.Close()

错误处理很重要,若JSON格式不对或缺少必填字段,应返回400状态码

Find JSON Path Online
Find JSON Path Online

Easily find JSON paths within JSON objects using our intuitive Json Path Finder

Find JSON Path Online 30
查看详情 Find JSON Path Online

返回JSON响应(序列化)

把Go数据编码为JSON发送给客户端,使用json.NewEncoder写入响应流更高效。

示例:
w.Header().Set("Content-Type", "application/json")
user := User{ID: 1, Name: "Alice", Email: "alice@example.com"}
json.NewEncoder(w).Encode(user)
登录后复制

设置正确的Content-Type有助于前端正确解析响应内容。

完整HTTP处理函数示例

下面是一个接收用户信息并返回确认数据的Handler:

func HandleUser(w http.ResponseWriter, r *http.Request) {
    var user User
    if err := json.NewDecoder(r.Body).Decode(&user); err != nil {
        http.Error(w, "Invalid JSON", http.StatusBadRequest)
        return
    }
    defer r.Body.Close()

    // 假设保存成功
    user.ID = 123

    w.Header().Set("Content-Type", "application/json")
    w.WriteHeader(http.StatusCreated)
    json.NewEncoder(w).Encode(user)
}
登录后复制

这个函数能处理POST请求,验证输入,返回带ID的JSON结果。

基本上就这些。Go的标准库足够应对大多数场景,不需要额外框架也能写出清晰可靠的JSON接口。

以上就是Golang如何处理JSON请求和响应的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号