mysql - Golang正确发送带有状态的json响应的方法
问题描述
如何json
在响应正文中发送带有状态码的响应。
我的代码
func getUser(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
var user []User
result := db.Find(&user)
json.NewEncoder(w).Encode(result)
}
我现在的结果:
[
{
"name" : "test",
"age" : "28",
"email":"test@gmail.com"
},
{
"name" : "sss",
"age" : "60",
"email":"ss@gmail.com"
},
{
"name" : "ddd",
"age" : "30",
"email":"ddd@gmail.com"
},
]
但我需要用status
这样的代码发送响应
{
status : "success",
statusCode : 200,
data : [
{
"name" : "test",
"age" : "28",
"email":"test@gmail.com"
},
{
"name" : "sss",
"age" : "60",
"email":"ss@gmail.com"
},
{
"name" : "ddd",
"age" : "30",
"email":"ddd@gmail.com"
},
]
}
解决方案
如果您想要不同的 json,请将不同的对象传递给Encode
.
type Response struct {
Status string `json:"status"`
StatucCode int `json:"statusCode"`
Data []User `json:"data"`
}
func getUser(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
var user []User
result := db.Find(&user)
json.NewEncoder(w).Encode(&Response{"success", 200, result})
}
或使用map
:
json.NewEncoder(w).Encode(map[string]interface{}{
"status": "success",
"statusCode": 200,
"data": result,
})
推荐阅读
- asp.net-mvc - 当 DropDownList 从模型更改时填充 TextBoxFor 值
- c# - 干净的架构——如何在 MVC 中实现 Presenter
- google-apps-script - 将时间戳脚本扩展到多列,并且仅在单元格之前为空时更新
- javascript - 计算属性查找似乎改变了一个类/子类型
- prolog - 将列表列表合并为单个列表
- python - DRF 发送媒体文件在客户端下载
- three.js - 三.js:InstancedBufferAttribute中的meshPerAttribute参数是什么
- python - 在django中获取登录用户的用户名
- matlab - 如何裁剪出复杂形状图像中的所有黑色像素?
- webpack - 在本地或全局导入组件之间是否存在大小差异?