Go问答 有没有统一的方式解析post 表单传递的嵌套参数?

pathbox · 2018年03月26日 · 最后由 keepeye 回复于 2018年03月26日 · 505 次阅读

问题是这样的, 是 post application/www-form-urlencoded 这样的表单提交,提交的参数一种是这样的

{"data"=>
  {"type"=>"notice",
   "title"=>"通知",
   "content"=>"<p>啦啦啦</p>",
 "user_id"=>1,
 }

另一种是这样

{"data"=>
  {"type"=>"notice",
   "title"=>"通知",
   "content"=>"<p>啦啦啦</p>",
   "option" => "true",
 "age"=>1,
}

以后可能有第三种,第四种

在经过 r.ParseForm() 之后, re := r.PostForm; re 值是:

map[user_id:[2] data[type]:[notice] data[title]:[通知] data[content]:[\u003cp\u003e啦啦啦\u003c/p\u003e]]

是一个 map, 但是原来嵌套的 data 结构被平铺了。。。 变成了多个 data[xxx] 这样的 key, 而处理之后想要返回的数据结构是 原来一样,不要 data 被平铺。 我知道可以定义嵌套的 map,一一对应的赋值,但这样参数结构你就需要前后端都知道了,而且会很麻烦,其实逻辑只是把传来的参数原样 json 数据的返回, 请问有没有统一的方式序列化处理上面两种甚至多种嵌套的数据结构

我知道用 application/json 这样就能友好的序列化 json 了,但是 现在前端的代码固定不变,已经在使用 application/www-form-urlencoded 的方式请求了

更多原创文章干货分享,请关注公众号
  • 加微信实战群请加微信(注明:实战群):gocnio

有思路了,如果只要返回的是 data 的 map 数据, 可以匹配 data,并且解析 data[xxx] 的值,来拼成一个 map 来得到 data 中的嵌套 map 数据, 如果是要 data 内和 data 外都需要,会更复杂一些

比较蛋疼,还是 json 好。要不自己写个 parseForm 得了,感觉也不难

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册