5.3.2 菜单结构说明

给公众账号创建自定义菜单需要向微信服务器POST特定格式的菜单结构,我们可以在公众平台开发者文档中找到菜单结构的示例,如下所示:

  1. {
  2. "button": [
  3. {
  4. "type": "click",
  5. "name": "今日歌曲",
  6. "key": "V1001_TODAY_MUSIC"
  7. },
  8. {
  9. "type": "view",
  10. "name": "歌手简介",
  11. "url": "http:// www.qq.com/"
  12. },
  13. {
  14. "name": "菜单",
  15. "sub_button": [
  16. {
  17. "type": "click",
  18. "name": "hello word",
  19. "key": "V1001_HELLO_WORLD"
  20. },
  21. {
  22. "type": "click",
  23. "name": "赞一下我们",
  24. "key": "V1001_GOOD"
  25. }
  26. ]
  27. }
  28. ]
  29. }

可以看出,上面这段菜单结构一共定义了3个一级菜单,名称分别为“今日歌曲”、“歌手简介”和“菜单”。其中,“今日歌曲”和“歌手简介”没有子菜单,而“菜单”包含2个子菜单,分别是 "hello word "和“赞一下我们”。创建后的效果如图5-2所示。

5.3.2 菜单结构说明 - 图1

图5-2 菜单的效果

JSON格式的数据虽然简洁、轻便,但是编辑起来却非常麻烦,这点笔者深有体会。只要少一个(或多一个)逗号或者括号不匹配都会导致JSON解析出错,在数据量较大的情况下,JSON格式的校验会变得非常困难。

既然我们采用的是面向对象的编程语言,就应该通过面向对象的方式得到JSON菜单结构,而不应该再使用手工编辑或字符串拼接的方式,否则很容易出错,更不利于代码的阅读和后期维护。因此,我们需要对菜单结构进行一定的封装。