• Json之java解析


    Jackson应该是目前最流行的java解析json文件的方式,首先了解下Jackson的基本知识: http://www.cnblogs.com/lee0oo0/articles/2652528.html

    下载jar包 jackson-all-1.9.11.jar

    有个这样的Json示例文件,可以看得出来这是个相对复杂的json文件:

    { "search": { "entry": [
    { "dn": "uid=823798897,c=us,ou=bluepages,o=ibm.com",
    "attribute": [
    { "name": "alternatenode", "value": [ "RALVM8" ] },
    { "name": "tieline", "value": [ "352-0000" ] },
    { "name": "mail", "value": [ "hwpmgr7@us.ibm.com" ] },
    { "name": "uid", "value": [ "823798897" ] },
    { "name": "floor", "value": [ "1" ] },
    }
    ],
    "return": {
    "code": 0,
    "message": "Success",
    "count": 1
    }
    } }

    这里我通过简单数据绑定也就是Java Map来解析这个文件,也可以通过java bean来解析,但是因为我用到的数据比较单一,就不想麻烦从新建立java bean了

    以下是java代码:

        public static void parseJson(String str) throws JsonParseException, JsonMappingException, IOException{
            
            ObjectMapper mapper = new ObjectMapper();  
            System.out.println(str);
            Map<String, Map<String, List<Map<String,List<Map<String,List<String>>>>>>> map = mapper.readValue(str, Map.class);
            System.out.println(map.get("search").get("entry").get(0).get("attribute").get(0).get("value").get(0));
        }

    通过以上代码应该可以看得出来我在定义的时候已经对以上的文件做了分析

    通常来说对于一个对象 可以定义为Map<String,Object>

    对于一个数组 可以定义为List<Object>

    map.get(key)  这个就是得到map中key的value 

    .get(0) 这个就是获得数组中的第一个 如果要遍历数组就这样:

            Iterator<?> iterator = map.get("search").get("entry").get(0).get("attribute").iterator();   
            while ( iterator.hasNext() ) {
                Map<String,List<String>> sm = (Map<String, List<String>>) iterator.next();
                 System.out.println(sm.get("name")+sm.get("value").get(0));
            }

    这里要注意的是最后一个[]依然是一个数组,所以还是要用List来处理。

    但如果是一个String一个List的组合 可以这样Map<String,?>:

    Iterator<?> iterator = map.get("search").get("entry").get(0).get("attribute").iterator();   
            while ( iterator.hasNext() ) {
                Map<String,?> sm = (Map<String, ?>) iterator.next();
                if(sm.get("name").toString().equals(name)){
                    return (((List<String>) sm.get("value")).get(0)).toString();
                }
            }
  • 相关阅读:
    C语言 汉诺塔问题
    指向函数的指针 linux中常见的函数指针应用及函数指针数组
    C语言 折半/二分法查找
    C语言 stdlib.h自带函数库:qsort()排序,简称"快排"
    几种排序算法的稳定性归纳
    C语言 归并排序
    c语言 堆排序 多函数处理法
    C语言 递归方法实现快速排序
    C语言 通过输出排序次数来比较希尔排序和插入排序的优劣
    c语言 希尔排序简化函数版
  • 原文地址:https://www.cnblogs.com/goldenRazor/p/5102677.html
Copyright © 2020-2023  润新知