我试图在我的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"`
}
我该如何处理这种情况?
答案 0 :(得分:1)
Result
字段是一个切片,可以是nil
。这在JSON中呈现为null
。要使其不是nil
,您必须对其进行初始化。
此外,由于Result
是一个切片,因此它将被编组为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":""}