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