最近在写golang的聊天室,发现个问题,也就是解析前端传过来的json字符串的时候该怎么解析,下面为个人简要笔记。
服务端接收客户端请求的json字符串
请求json字符串解析也很简单,主要是调用json包中的NewDecoder方法去做解析,可以直接解析http请求的body。
func main() {
// 监听请求
http.HandleFunc("/test",getJsonTest)
err := http.ListenAndServe(":8000",nil)
if err != nil{
log.Println("http server listen :",err)
}
}
func getJsonTest(w http.ResponseWriter,r *http.Request){
err := r.ParseForm()
if err != nil {
log.Fatal("parse form error ",err)
}
// 初始化请求变量结构
formData := make(map[string]interface{})
// 调用json包的解析,解析请求body
json.NewDecoder(r.Body).Decode(&formData)
for key,value := range formData{
log.Println("key:",key," => value :",value)
}
}
服务端发送json字符串给前端
上述已经说明了解析json字符串所使用的工具,那么如何返回json字符串给前端呢,其实也是一样,用json包中的NewEncode去解析然后发送给客户端即可,下面为示例代码。
func getJsonTest(w http.ResponseWriter,r *http.Request){
err := r.ParseForm()
if err != nil {
log.Fatal("parse form error ",err)
}
// 初始化请求变量结构
formData := make(map[string]interface{})
// 调用json包的解析,解析请求body
json.NewDecoder(r.Body).Decode(&formData)
for key,value := range formData{
log.Println("key:",key," => value :",value)
}
// 返回json字符串给客户端
w.Header().Set("Content-Type","application/json")
json.NewEncoder(w).Encode(formData)
}
好了,暂时只做这些笔记,如果有问题,希望提出意见,一起成长。