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

最近一直在做微信模块,整来整去的烦透了,天天加班。。还是新手阶段,边学边弄吧,做到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控制遍历一下就可以继续了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值