doumeng1143 2013-06-10 20:10
浏览 394
已采纳

如何使用http.ResponseWriter在Go中形成JSONP响应?

I'm developing an API that accepts JSONP requests in Go. I can serialize a struct into JSON and return it, but wrapping the JSON in padding, or the callback function, is a little awkward, since the argument to Write() needs to be a byte slice:

callback := req.FormValue("callback")

// ...

jsonBytes, _ := json.Marshal(resp)
if callback != "" {
    jsonStr := callback + "(" + string(jsonBytes) + ")"
    jsonBytes = []byte(jsonStr)
}
responseWriter.Write(jsonBytes)

I suppose I will encapsulate this in some function. Mostly I find the string/[]byte conversion funky. Is there a better way to do this?

  • 写回答

1条回答 默认 最新

  • dounue1965 2013-06-10 23:16
    关注

    Use fmt.Fprintf to simplify it:

    if callback != "" {
        fmt.Fprintf(w, "%s(%s)", callback, jsonBytes)
    } else {
        w.Write(jsonBytes)
    }
    

    Or if you only want to write in one place:

    jsonBytes = []byte(fmt.Sprintf("%s(%s)", callback, jsonBytes))
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
编辑
预览

报告相同问题?

手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部