微信公众号自定义菜单出现的错误:不合法的请求字符,不能包含\uxxxx格式的字符
ComButton jobInfo = new ComButton();
jobInfo.setName("招聘资讯");
ViewButton recruit = new ViewButton();
recruit.setName("招聘信息");
String url_recruit = "/recruitmentInfo/getMenuTolist?id=14&type=2&checkedName=招聘信息&wechatListUrl=/view/toJobList&wechatDetailUrl=/view/toJobDetail";
recruit.setUrl(Constants.WECHAT_DOMAIN + url_recruit);
ViewButton internship = new ViewButton();
internship.setName("实习信息");
String url_internship = "/recruitmentInfo/getMenuTolist?id=15&type=1&checkedName=实习信息&wechatListUrl=/view/toJobList&wechatDetailUrl=/view/toJobDetail";
internship.setUrl(Constants.WECHAT_DOMAIN + url_internship);
ViewButton preachMeeting = new ViewButton();
preachMeeting.setName("专场宣讲会");
String url_preachMeeting = "/recruitmentInfo/getMenuTolist?id=16&type=1&checkedName=专场宣讲会&wechatListUrl=/view" +
"/toJobFairList&wechatDetailUrl=/view/toJobFairDetail";
preachMeeting.setUrl(Constants.WECHAT_DOMAIN + url_preachMeeting);
ViewButton doubleChoice = new ViewButton();
doubleChoice.setName("大型双选会");
String url_doubleChoice = "/recruitmentInfo/getMenuTolist?id=17&type=2&checkedName=大型双选会&wechatListUrl=/view/toJobFairList&wechatDetailUrl=/view/toJobFairDetail";
doubleChoice.setUrl(Constants.WECHAT_DOMAIN + url_doubleChoice);
jobInfo.setSub_button(new Button[]{recruit, internship, preachMeeting, doubleChoice});
Menu menu = new Menu();
menu.setButton(new Button[] { jobInfo });
//序列化菜单
String str = new Gson().toJson(menu);
ApiResult apiResult = MenuApi.createMenu(str);
if (apiResult.isSucceed())
renderText(apiResult.getJson());
else
renderText(apiResult.getErrorMsg());
生成菜单返回:不合法的请求字符,不能包含\uxxxx格式的字符
解决办法
Gson gson = new GsonBuilder().disableHtmlEscaping().create();
String str = gson.toJson(menu);
问题解决了!!!
后续会解析一下这个错的原因以及查看这种Gson初始化的方式有什么不同。