如果我将URL保存在数据库中
http.ResponseWriter以下列格式返回
在上面的网址中你可以看到%2F被替换为!F(MISSING)
可以帮助解决这个问题吗
以下是代码段 ``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
有疑问答案 0 :(得分:5)
正如评论中所提到的:你的问题是Fprintf使用第二个参数作为一种格式,将每个%解释为一个指标,它应该在那里插入一个变量。在您的字符串中有一个%符号,但您没有提供任何插入参数。所以它写作MISSING
。
由于您不想格式化任何内容(似乎)只需使用此代码:
cnt, err := fmt.Fprint(rs, jsonStr)