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异常控制处理程序错误流程

    Golang异常控制处理程序错误流程

    这篇文章主要介绍了Golang异常控制处理程序错误流程,Golang异常处理机制包括错误处理、panic和defer,可控制程序错误流程,保证程序稳定性和安全性,是Golang编程的关键方式
    2023-04-04
  • golang生成vcf通讯录格式文件详情

    golang生成vcf通讯录格式文件详情

    这篇文章主要介绍了golang生成vcf通讯录格式文件详情,​VCF是通讯录格式文件,一般需要用手机通讯录导入导出的文件格式都是vcf格式。​下面详细内容介绍需要的小伙伴可以参考一下
    2022-03-03
  • Go并发的方法之goroutine模型与调度策略

    Go并发的方法之goroutine模型与调度策略

    在go中,协程co-routine被改为goroutine,一个goroutine只占几kb,因此可以有大量的goroutine存在,另一方面goroutine 的调度器非常灵活,本文给大家介绍下Go并发的方法之goroutine模型与调度策略,感兴趣的朋友一起看看吧
    2021-11-11
  • golang 跳出多重循环的高级break用法说明

    golang 跳出多重循环的高级break用法说明

    这篇文章主要介绍了golang 跳出多重循环的高级break用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • 详解Go如何优雅的对时间进行格式化

    详解Go如何优雅的对时间进行格式化

    这篇文章主要为大家详细介绍了Go语言中是如何优雅的对时间进行格式化的,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起了解一下
    2023-06-06
  • Go实现文件上传和下载

    Go实现文件上传和下载

    这篇文章主要为大家详细介绍了Go实现文件上传和下载,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-07-07
  • golang常用加密解密算法总结(AES、DES、RSA、Sha1、MD5)

    golang常用加密解密算法总结(AES、DES、RSA、Sha1、MD5)

    在项目开发过程中,当操作一些用户的隐私信息,本文主要主要介绍了golang常用加密解密算法总结(AES、DES、RSA、Sha1MD5),文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • Golang因Channel未关闭导致内存泄漏的解决方案详解

    Golang因Channel未关闭导致内存泄漏的解决方案详解

    这篇文章主要为大家详细介绍了当Golang因Channel未关闭导致内存泄漏时盖如何解决,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2023-07-07
  • Go依赖注入DI工具wire使用详解(golang常用库包)

    Go依赖注入DI工具wire使用详解(golang常用库包)

    依赖注入是指程序运行过程中,如果需要调用另一个对象协助时,无须在代码中创建被调用者,而是依赖于外部的注入,本文结合示例代码给大家介绍Go依赖注入DI工具wire使用,感兴趣的朋友一起看看吧
    2022-04-04
  • 解析golang 标准库template的代码生成方法

    解析golang 标准库template的代码生成方法

    这个项目的自动生成代码都是基于 golang 的标准库 template 的,所以这篇文章也算是对使用 template 库的一次总结,本文通过实例代码给大家介绍的非常详细,需要的朋友参考下吧
    2021-11-11

最新评论