【发布时间】:2018-03-20 09:36:53
【问题描述】:
如果我将数据库中的 url 保存为
http.ResponseWriter 以如下格式返回
在上面的 url 中你可以看到 %2F 被替换为 !F(MISSING)
谁能帮忙解决这个问题
以下是代码sn -p ``rs.WriteHeader(retObj.HttpStatus)
jsonStr, res := ConvObjectToJSON(retObj)
if res != nil {
Logger(ctx, cnst.LogError, "In writeReturnError error in ConvObjectToJSON: %v Original object:%v",
res.GetMessageWDetails(), retObj)
rs.WriteHeader(http.StatusInternalServerError)
return
}
var consoleLog *log.Logger = log.New(os.Stdout, cnst.LogPrefix, log.Ldate|log.Ltime)
consoleLog.Print(jsonStr)
cnt, err := fmt.Fprintf(rs, jsonStr)
if nil == err && 0 < cnt {
rs.Header().Set("Content-Type", "application/json")
} else {
Logger(ctx, cnst.LogError, "In writeReturnError error in fmt.Fprintf: %v Original JSON:%v",
err.Error(), jsonStr)
rs.WriteHeader(http.StatusInternalServerError)
}
``
我对 fmt.Fprintf 有疑问
【问题讨论】:
-
请将sn-p粘贴到你使用的地方?
-
这似乎是 Printf 语句的问题。跑去兽医。
-
只是不要使用 Fprintf。你希望 Fprintf 做什么?如果您不能容忍来自 Fprintln 的换行符,或者使用 Fprintf(rs, "%s", whatever")。
-
@Volker,感谢您的建议,Fprintf(rs, "%s", whatever") 工作正常
-
Fprintf(rs, "%s", whatever")比Fprint(rs, whatever)慢。它必须先解析格式,进行一些字符串计算,然后才能最终将其写入编写器。