Go语言JSON数据返回的实战案例

 更新时间:2025年08月14日 10:12:54   作者:程序员爱钓鱼  
本文介绍用Go标准库构建返回JSON的HTTP接口,包括GET请求处理、JSON编码及响应设置,为RESTful API开发打下基础,感兴趣的可以了解一下

在现代 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 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 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 错误。

六、总结

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

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

到此这篇关于Go语言JSON数据返回的实战案例的文章就介绍到这了,更多相关Go语言 JSON数据返回内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Golang 如何判断数组某个元素是否存在 (isset)

    Golang 如何判断数组某个元素是否存在 (isset)

    这篇文章主要介绍了Golang 如何判断数组某个元素是否存在 (isset),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-04-04
  • GO实现基于命令行的简单IPS程序代码

    GO实现基于命令行的简单IPS程序代码

    本文介绍了入侵防御系统IPS的工作原理和实现,IPS通过网络流量监控和实时响应,防止网络攻击,通过使用Go语言实现一个简单的IPS示例程序,展示了如何获取本地IP地址和探测网络中其他设备的IP地址,包括如何定义和加载规则文件,以及如何检测IP对相应端口的访问是否达到规定阈值
    2024-12-12
  • Golang10进制转16进制的几种方法代码示例

    Golang10进制转16进制的几种方法代码示例

    这篇文章主要给大家介绍了关于Golang10进制转16进制的几种方法,进制转换是Golang的一些基本操作,文中通过实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-07-07
  • go货币计算时如何避免浮点数精度问题

    go货币计算时如何避免浮点数精度问题

    在开发的初始阶段,我们经常会遇到“浮点数精度”和“货币值表示”的问题,那么在golang中如何避免这一方面的问题呢,下面就跟随小编一起来学习一下吧
    2024-02-02
  • golang解析xml的方法

    golang解析xml的方法

    这篇文章主要介绍了golang解析xml的方法,结合实例形式分析了Go语言针对xml文件的读取与解析的相关技巧,需要的朋友可以参考下
    2016-07-07
  • golang实现ftp实时传输文件的案例

    golang实现ftp实时传输文件的案例

    这篇文章主要介绍了golang实现ftp实时传输文件的案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • 一文带你掌握Golang中panic与recover的使用方法

    一文带你掌握Golang中panic与recover的使用方法

    这篇文章主要介绍了Golang中panic与recover的作用和使用方法,文中的示例代码讲解详细,具有一定的学习价值,需要的小伙伴可以参考一下
    2023-04-04
  • golang模拟TCP粘包和拆包

    golang模拟TCP粘包和拆包

    粘包是指在发送多个小的数据包时,接收端会将这些数据包合并成一个数据包接收,拆包是指发送的数据包在传输过程中被分割成多个小包,下面我们来看看go如何模拟TCP粘包和拆包吧
    2024-12-12
  • Golang数组的传递详解

    Golang数组的传递详解

    今天小编就为大家分享一篇关于Golang数组的传递详解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • Go语言对接微信支付与退款指南(示例详解)

    Go语言对接微信支付与退款指南(示例详解)

    在互联网技术日益发展的背景下,Go语言凭借并发处理能力,在后端开发中大放异彩,本文详细介绍如何使用Go语言对接微信支付,完成支付和退款功能,包括准备工作、初始化微信支付客户端、实现支付功能,以及处理支付回调和退款等
    2024-10-10

最新评论