5.3.2 菜单结构说明
给公众账号创建自定义菜单需要向微信服务器POST特定格式的菜单结构,我们可以在公众平台开发者文档中找到菜单结构的示例,如下所示:
- {
- "button": [
- {
- "type": "click",
- "name": "今日歌曲",
- "key": "V1001_TODAY_MUSIC"
- },
- {
- "type": "view",
- "name": "歌手简介",
- "url": "http:// www.qq.com/"
- },
- {
- "name": "菜单",
- "sub_button": [
- {
- "type": "click",
- "name": "hello word",
- "key": "V1001_HELLO_WORLD"
- },
- {
- "type": "click",
- "name": "赞一下我们",
- "key": "V1001_GOOD"
- }
- ]
- }
- ]
- }
可以看出,上面这段菜单结构一共定义了3个一级菜单,名称分别为“今日歌曲”、“歌手简介”和“菜单”。其中,“今日歌曲”和“歌手简介”没有子菜单,而“菜单”包含2个子菜单,分别是 "hello word "和“赞一下我们”。创建后的效果如图5-2所示。
图5-2 菜单的效果
JSON格式的数据虽然简洁、轻便,但是编辑起来却非常麻烦,这点笔者深有体会。只要少一个(或多一个)逗号或者括号不匹配都会导致JSON解析出错,在数据量较大的情况下,JSON格式的校验会变得非常困难。
既然我们采用的是面向对象的编程语言,就应该通过面向对象的方式得到JSON菜单结构,而不应该再使用手工编辑或字符串拼接的方式,否则很容易出错,更不利于代码的阅读和后期维护。因此,我们需要对菜单结构进行一定的封装。