从sFlow-rt提供的REST API得到了一段JSON数据,如何进行解析呢?
{
"17.ifInmulticastpkts": 0,
"17.ifindex": "17",
"17.ifindiscards": 0,
"17.ifinerrors": 0,
"17.ifinoctets": 0,
"17.ifinucastpkts": 0,
"17.ifoutdiscards": 0,
"17.ifouterrors": 0,
"17.ifoutoctets": 0,
"17.ifoutucastpkts": 0,
"17.ifspeed": 10000000000,
"17.iftype": "ethernetCsmacd",
"19.ifInmulticastpkts": 0,
"19.ifindex": "19",
"19.ifindiscards": 0,
"19.ifinerrors": 0,
"19.ifinoctets": 0,
"19.ifinucastpkts": 0,
"19.ifoutdiscards": 0,
"19.ifouterrors": 0,
"19.ifoutoctets": 0,
"19.ifoutucastpkts": 0,
"19.ifspeed": 10000000000,
"19.iftype": "ethernetCsmacd",
"21.ifInmulticastpkts": 0,
"21.ifindex": "21",
"21.ifindiscards": 0,
"21.ifinerrors": 0,
"21.ifinoctets": 0,
"21.ifinucastpkts": 0,
"21.ifoutdiscards": 0,
"21.ifouterrors": 0,
"21.ifoutoctets": 0,
"21.ifoutucastpkts": 0,
"21.ifspeed": 10000000000,
"21.iftype": "ethernetCsmacd",
"23.ifInmulticastpkts": 0,
"23.ifindex": "23",
"23.ifindiscards": 0,
"23.ifinerrors": 0,
"23.ifinoctets": 0,
"23.ifinucastpkts": 0,
"23.ifoutdiscards": 0,
"23.ifouterrors": 0,
"23.ifoutoctets": 0,
"23.ifoutucastpkts": 0,
"23.ifspeed": 10000000000,
"23.iftype": "ethernetCsmacd"
}
也就是每组数字对应的一个model,但是没有在JSON中分开,这样的JSON如何进行解析,谢谢各位大神。
[code="java"]
public class JSon2ModelTest {
public static void main(String[] args) {
Map map = new HashMap();
map.put("1.xx", "1xx");
map.put("1.yy", "1yy");
map.put("1.zz", "1zz");
map.put("2.xx", "2xx");
map.put("2.yy", "2yy");
map.put("2.zz", "2zz");
map.put("3.xx", "3xx");
map.put("3.yy", "3yy");
map.put("3.zz", "3zz");
String str=JSON.toJSON(map).toString();
Map m=JSON.parseObject(str, Map.class);
Set s=m.keySet();
Iterator it=s.iterator();
//缓存分组后的数据的map对象
Map> mm=new HashMap>();
//缓存分组后的数据的map对象的key
List listKey=new ArrayList();
//初始化缓存的map对象开始
List<String> listInit=new ArrayList<String>();
String t = it.next();
String initKey = t.substring(0,t.indexOf("."));
listKey.add(initKey);
listInit.add(t);
mm.put(initKey, listInit);
//初始化缓存的map对象结束
for(;it.hasNext();){
String str2 = it.next();
String temp = str2.substring(0,str2.indexOf("."));
if(mm.containsKey(temp)){
mm.get(temp).add(str2);
}else{
List<String> ll = new ArrayList<String>();
listKey.add(temp);
mm.put(temp, ll);
}
}
}
}
[/code]
这是测试的代码,你可以参考一下
一个在线的json格式化视图工具,很方便:
http://www.bejson.com/go.php?u=http://www.bejson.com/jsonviewernew/
取出来后,再根据.进行分割再处理
JSONObject jo = new JSONObject(sFlow-rt);
String 17.ifInmulticastpkts= jo.getString("17.ifInmulticastpkts");
....
....
其他都一样
用 json-org.jar
转成Map对象,取出来keySet,然后根据条件将keySet分组,然后根据分组后的keySet从Map对象里获取值,组装成VO对象就好了呀