dongsweet 2013-01-21 23:24
浏览 305
已采纳

一段JSON,如何进行解析

从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如何进行解析,谢谢各位大神。

  • 写回答

5条回答 默认 最新

  • mythsaa 2013-01-22 14:11
    关注

    [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]

    这是测试的代码,你可以参考一下

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能
  • ¥15 jmeter脚本回放有的是对的有的是错的
  • ¥15 r语言蛋白组学相关问题
  • ¥15 Python时间序列如何拟合疏系数模型