C# 微信公众号自定义菜单JSON反序列化

namespace BamnWeiXin
{
    public class MenuGetResultInfo
    {
        public Menu menu { get; set; }
    }

    public class Menu
    {
        public List<Button> button { get; set; }
    }

    public class Button
    {
        public string type { get; set; }
        public string name { get; set; }
        public string key { get; set; }
        public string url { get; set; }
        public List<Button> sub_button { get; set; }
    }
}
Code language: JavaScript (javascript)

核心代码

// 将微信接口返回的JSON字符串反序列化成菜单实体对象
MenuGetResultInfo menuInfo = Tool.DeserializeJson<MenuGetResultInfo>(json);
Code language: HTML, XML (xml)
  1. 场景:调用微信公众号【获取自定义菜单】接口,微信返回一段JSON字符串,我们需要把JSON转为C#实体对象(反序列化),方便代码读取菜单数据。
  2. 实体结构对应微信返回JSON结构
    • 最外层:MenuGetResultInfo → 包含menu
    • Menu类:包含一级菜单数组 button
    • Button类:单个菜单,支持二级子菜单 sub_button
      • type:菜单类型(click、view等)
      • name:菜单显示文字
      • key:点击事件关键字(click类型菜单)
      • url:网页跳转链接(view类型菜单)
      • sub_button:二级子菜单列表
  3. 调试监视窗口:
    • menuInfo.menu.button.Count=2:代表2个一级菜单
    • 其中一个一级菜单的sub_button.Count=3:代表这个菜单下面有3个二级子菜单
    • 没有子菜单的按钮,sub_buttonnull

注意点

属性名必须和微信返回JSON字段名完全一致(大小写!sub_button不能写成subButton,除非加JsonProperty别名),否则反序列化无法赋值。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注