fastjson与Map、List结合使用

来源:互联网 发布:武汉淘宝摄影师招聘 编辑:程序博客网 时间:2024/05/23 13:48

这个例子是我昨天开发时遇到的,主要的思路是:

1,、前端给我传一个字符串,这个字符串包含id和name两个属性;

2、我将String装换为JSON字符串,并且去除id;

3、根据取出的id到数据库中取数据,取出的字段为id、name、address;

4、匹配数据库中取出的数据,原则为:若数据库中取到该id,该条数据不动;若数据库中没有取到该id所对应的的数据,用原来传来的id对于的值。

5、将获取整合后的数据,并返回。

以下程序是我依据思路整合的小例子,主要的操作都是Map和List的使用,以及其与fastjson的转换。

注:导入包是fastjson-1.2.3-1.2.3.jar

<span style="font-size:18px;">public static void main(String[] args) {//原始List<Map<String, String>>格式字符串String companyIdList ="[{'id':1111,'companyName':'阿里巴巴'},{'id':2222,'companyName':'百度'},{'id':3333,'companyName':'腾讯'}]";JSONArray jsonArray = JSON.parseArray(companyIdList);List<String> idList = new ArrayList<String>();List<String> nameList = new ArrayList<String>();Map<String, String> idAndName = new HashMap<String,String>();for(Object object : jsonArray){@SuppressWarnings("unchecked")Map<String , Object> map = JSONObject.parseObject(object.toString() , Map.class) ;idList.add(map.get("id").toString());nameList.add(map.get("companyName").toString());idAndName.put(map.get("id").toString() , map.get("companyName").toString());}System.out.println("原始数据:");System.out.println(companyIdList);//经过一段数据库处理后,根据companyId去数据库取数据之后得到的数据String dataBase ="[{'id':1111,'companyName':'阿里巴巴','address':'杭州'},{'id':2222,'companyName':'百度','address':'背景'}]";JSONArray jsonArray1 = JSON.parseArray(dataBase);List<String> id = new ArrayList<String>();List<String> name = new ArrayList<String>();List<String> address = new ArrayList<String>();List<Map<String, String>> listHashMap =  new ArrayList<Map<String, String>>();int i =0 ;for(Object object : jsonArray1){@SuppressWarnings("unchecked")Map<String , Object> map = JSONObject.parseObject(object.toString() , Map.class) ;id.add(map.get("id").toString());name.add(map.get("companyName").toString());address.add(map.get("address").toString());Map<String , String> m = new HashMap<String , String>() ;listHashMap.add(m);m.put("id", id.get(i));m.put("companyName", name.get(i));m.put("address", address.get(i));i++;}System.out.println("数据库取出的数据:");System.out.println(dataBase);//现在要将companyIdList所有公司都匹配到dataBase中,使得数据库中没有查到的公司在最终数据中也有id和companyName属性Set<String> ids = new HashSet<String>() ;        for(Map<String, String> e : listHashMap){        ids.add(e.get("id")) ;        }        for(String cd : idList){        if(! ids.contains(cd)){        Map<String , String> m = new HashMap<String , String>() ;        listHashMap.add( m ) ;        m.put("id", cd) ;        m.put("companyName", idAndName.get(cd)) ;        }        }         System.out.println("目标数据:");        System.out.println(listHashMap);}</span>


1 0
原创粉丝点击