微信自定义菜单json字符串解析

来源:互联网 发布:巨人网络借壳受益股 编辑:程序博客网 时间:2024/04/29 23:10

最近一直在做微信模块,整来整去的烦透了,天天加班。。还是新手阶段,边学边弄吧,做到JSON字符串处理这块, 费了很大劲,主要是json字符串不太会处理,刚刚做出来了一个版本,可以通过获取到服务器端的JSON数据进行解析,自己在封装到相应POJO就行了。直接贴码

package com.capinfo.crm.market.util;import java.util.ArrayList;import java.util.List;import net.sf.json.JSONArray;import net.sf.json.JSONObject;import com.capinfo.crm.market.entity.wechat.menu.Button;public class test {private static String json = "{\"button\":[{\"type\":\"click\",\"name\":\"今日歌曲\",\"key\":\"V1001_TODAY_MUSIC\"},"      +"{\"type\":\"click\",\"name\":\"歌手简介\",\"key\":\"V1001_TODAY_SINGER\"},{\"name\":\"菜单\",\"sub_button\":[{"      +"\"type\":\"view\",\"name\":\"搜索\",\"url\":\"http://www.soso.com/\"},{\"type\":\"view\",\"name\":\"视频\","      +"\"url\":\"http://v.qq.com/\"},{\"type\":\"click\",\"name\":\"赞一下我们\",\"key\":\"V1001_GOOD\"}]}]}";private static String test = "{\"button\":[{\"type\":\"view\",\"name\":\"今日歌曲\",\"url\":\"http://sss.com\"},"      +"{\"type\":\"click\",\"name\":\"歌手简介\",\"key\":\"V1001_TODAY_SINGER\"}]}";public static void main(String[] args){JSONObject jsonObject = JSONObject.fromObject(test);//JSONObject menu = jsonObject.getJSONObject("menu");//新加的,2013/12/24日,因为微信菜单格式有变化,开头有{"menu":{"button":"...JSONArray array = menu.getJSONArray("button");for(int i=0;i<array.size();i++){JSONObject obj = array.getJSONObject(i);String name = obj.getString("name");if(obj.containsKey("type")){String type = obj.getString("type");String str = null;if(type.equals("click")){str = obj.getString("key");}else if(type.equals("view")){str = obj.getString("url");}System.out.println("name:"+name+"|type:"+type+"|str:"+str);}else{System.out.println("一级菜单名称:"+name);JSONArray sub_arr = obj.getJSONArray("sub_button");for(int j=0;j<sub_arr.size();j++){JSONObject sub_menu = sub_arr.getJSONObject(j);String type = sub_menu.getString("type");String sub_name = sub_menu.getString("name");String str = null;if(type.equals("click")){str = sub_menu.getString("key");}else if(type.equals("view")){str = sub_menu.getString("url");}System.out.println("子菜单name:"+sub_name+"|type:"+type+"|str:"+str);}}}}}



只是个测试类,封装还需要自己搞。看了半天JSONObject的资料,没有一个全的,自己简单总结一下,以后有时间再总结,就是如果json的key-value对后边跟的是中括号

比如,

{     "button":     [     {  "type":"click",  "name":"今日歌曲",  "key":"V1001_TODAY_MUSIC"      }      ]}
,那就代表后边跟的是个数组,需要用JSONArray来接收,然后用这个对象的size控制遍历一下就可以继续了。

0 0
原创粉丝点击