我正在尝试在我的 go api 中处理 http 请求,我希望在其中发送空的 json 字符串,例如
{"result": {}, "status": "failed"}
但是当 mysql 查询返回零行时,它返回一个输出为
{"result": null, "status": "failed"}
编辑:这是我正在使用的响应结构:
type Resp struct {
Result []map[string]interface{} `json:"result"`
Status string `json:"status"`
}
我该如何处理这种情况?
最佳答案
Result
字段是一个slice,可以是nil
。这在 JSON 中呈现为 null
。要使其不为 nil
,您必须对其进行初始化。
此外,由于 Result
是一个 slice ,它将被编码为一个 JSON 数组 ([]
),而不是一个 JSON 对象 ({}/
)。
例子:
package main
import (
"encoding/json"
"fmt"
"log"
"os"
)
type Resp struct {
Result []map[string]interface{} `json:"result"`
Status string `json:"status"`
}
func main() {
enc := json.NewEncoder(os.Stdout)
fmt.Println("Empty Resp struct:")
if err := enc.Encode(Resp{}); err != nil {
log.Fatal(err)
}
fmt.Println()
fmt.Println("Initialised Result field:")
if err := enc.Encode(Resp{Result: []map[string]interface{}{}}); err != nil {
log.Fatal(err)
}
}
输出:
Empty Resp struct:
{"result":null,"status":""}
Initialised Result field:
{"result":[],"status":""}
关于json - 想要发送空 json 字符串 "{}"而不是 "null",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49611607/