zoukankan      html  css  js  c++  java
  • 深入了解Json转变为map的思想,附源代码2

    最近在做一个投票情况的用例,返回的结果打算放到JSON中


    数据库的结果集如上图所示:optionkey代表选项,optionval代表其值

    第一次做的时候考虑应该键值对应的关系,所以前台接到的json  应该以A:t ,B:p这种形式保存

    则第一次写法:

    Map m = new HashMap();
    List<Map> l = restConversationService.getTPOptions(tmpId);//取结果集
    Iterator<Map> it = l.iterator();
    Map map=null;//存储结果集的行
    Map optionMap = new HashMap();//定义一个新的键
    while(it.hasNext())
    {
    map =(Map)it.next();
    	optionMap.put((String) map.get("optionkey"), (String) map.get("optionval"));
    }
    	
    	m.put("optionMap", optionMap);
    	m.put("content",Base64.encode(tmp.get("content").toString().getBytes()));
    tmp.put("content", m);//tmp里还有其他东西略,只看content就行

    前台效果如上图所示,缺点:这更像是一个实体的两个属性,而非两条记录。且以后不能排序,扩展性不太好。

    第二次尝试,为了排序,可不可以把KEY放到一个list,value放到一个list,实现一一对应。

    Map m = new HashMap();
    List<Map> l = restConversationService.getTPOptions(tmpId);
    Iterator<Map> it = l.iterator();
    Map map=null;
    
    List valList =new ArrayList();//定义两个list分别存放数据库取出的键和值
    List keyList =new ArrayList();
    
    while(it.hasNext())
    {
    	map =(Map)it.next();
    	keyList.add((String) map.get("optionkey"));//放键
    	valList.add((String) map.get("optionval"));//放值
    }
    	m.put("optionkey", keyList);
    	m.put("optionval", valList);
    	m.put("content",Base64.encode(tmp.get("content").toString().getBytes()));
    tmp.put("content", m);

    效果:

    缺点:似乎虽然有了排序但是键值关系不那么呼应了,且虽然不那么像1个实体的两个属性,但是感觉两者没太大关系。

    那么看第三种写法:

    Map m = new HashMap();
    List<Map> l = restConversationService.getTPOptions(tmpId);
    Iterator<Map> it = l.iterator();
    Map map=null;
    List dataList = new ArrayList();//存放格式与数据库保持一致,datalist里是MAP
    while(it.hasNext())
    {
    	map =(Map)it.next();
    	Map<String, String> dataMap = new HashMap<String, String>();//datalist要放的map
    	dataMap.put((String) map.get("optionkey"), (String) map.get("optionval"));//放入选项 和选项值的对应关系
    	dataList.add(dataMap);
    	
    }
    	m.put("d", dataList);
    	
    	m.put("content",Base64.encode(tmp.get("content").toString().getBytes()));
    	tmp.put("content", m);


    效果:

    从上图看出,返回的JSON没有改变原来数据库存储的形式,仍然是两行记录,键值清晰。

    返回的JSON除了完成功能需要,还要尽量不要改变数据库原型



  • 相关阅读:
    2016-7-4工作总结
    2016-7第一周工作总结
    2016-6-30 工作总结
    2016-6-29 工作总结
    2016-6-28 工作总结
    基于软件开发对嵌入式开发的思考
    团队项目总结
    软件工程课程总结
    图描述之:流程图
    004-二叉树的遍历
  • 原文地址:https://www.cnblogs.com/riskyer/p/3239161.html
Copyright © 2011-2022 走看看