`
yshlin
  • 浏览: 63754 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

java中List<Map>形的数据转JSON形的树

    博客分类:
  • java
阅读更多

本段代码主要是一个工具。费话不多说,

注:代码中的一些常量值分别为:

public static final String NUM_ZERO = "0";
 public static final String NUM_ONE = "1";
 public static final String NUM_UNONE = "-1";

public static final String SYMB_MH = ":";

上代码

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import net.sf.json.JSONArray;
import net.sf.json.JsonConfig;
import net.sf.json.util.CycleDetectionStrategy;

/**
 * 使用说明:将List<Map>转换为Tree<List<Map>>
 * @author yshlin
 *
 */
public class ListMap2TreeUtils {

	private String id;		//主键
	private String text;	//名称
	private String iconCls;		//图标
	private boolean leaf;	//是否叶子
	private boolean expanded;	//是否展开
	private int sort;		//序号
	private boolean checked;	//是否选中
	private Map<String, Object> attributes;
	private List<ListMap2TreeUtils> children;	//子节点

	public ListMap2TreeUtils() {
		super();
	}
	/*
	public ListMap2TreeUtils(String id, String text, String iconCls, boolean leaf,
			boolean expanded, Map<String, Object> attributes, List<ListMap2TreeUtils> children) {
		super();
		this.id = id;
		this.text = text;
		this.iconCls = iconCls;
		this.leaf = leaf;
		this.expanded = expanded;
		this.children = children;
		this.attributes = attributes;
	}
	*/
	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getText() {
		return text;
	}

	public void setText(String text) {
		this.text = text;
	}

	public String getIconCls() {
		return iconCls;
	}

	public void setIconCls(String iconCls) {
		this.iconCls = iconCls;
	}

	public boolean isLeaf() {
		return leaf;
	}

	public void setLeaf(boolean leaf) {
		this.leaf = leaf;
	}

	public boolean isExpanded() {
		return expanded;
	}

	public void setExpanded(boolean expanded) {
		this.expanded = expanded;
	}

	public List<ListMap2TreeUtils> getChildren() {
		return children;
	}

	public void setChildren(List<ListMap2TreeUtils> children) {
		this.children = children;
	}
	
	public int getSort() {
		return sort;
	}
	public void setSort(int sort) {
		this.sort = sort;
	}
	public boolean isChecked() {
		return checked;
	}
	public void setChecked(boolean checked) {
		this.checked = checked;
	}
	public Map<String, Object> getAttributes() {
		return attributes;
	}

	public void setAttributes(Map<String, Object> attributes) {
		this.attributes = attributes;
	}

	/**
	 * 带属性的List转JSON树
	 * [id, text, sjid, checked, iconCls, attributes{v1:v2:v3}, othermc...]
	 * 创建时间  
	 * 创建人 yshlin
	 * @param m2tList
	 * @param column
	 * @param rootName
	 * @return
	 *
	 */
	public static String getTreeJsonStringFull(final List<Map<String, Object>> m2tList, 
			final String[] column, final String rootName) {
		if(column.length < 6){
			return "";
		}
		
		Map<String, List<ListMap2TreeUtils>> arrayListMap = getArrayListMapFull(m2tList,column,rootName);
		return listToString(arrayListMap);
	}
	
	/**
	 * List转树的方法
	 * column = [id, mc, parentid]
	 * 创建时间 
	 * 创建人 yshlin
	 * 
	 * @param m2tList
	 * @param column
	 * @return
	 */
	public static String getTreeJsonString(final List<Map<String, Object>> m2tList, 
			final String[] column, final String rootName) {
		if(column.length < 4){
			return "";
		}
		Map<String, List<ListMap2TreeUtils>> arrayListMap = getArrayListMap(m2tList,column,rootName);
		return listToString(arrayListMap);
	}
	/**
	 * 生成层次形式的JSON
	 * 
	 * 创建时间 
	 * 创建人 yshlin
	 * @param arrayListMap
	 * @return
	 *
	 */
	private static String listToString(Map<String, List<ListMap2TreeUtils>> arrayListMap){
		for (Map.Entry<String, List<ListMap2TreeUtils>> entry : arrayListMap.entrySet()) {
			List<ListMap2TreeUtils> smallTreeList = new ArrayList<ListMap2TreeUtils>();
			smallTreeList = entry.getValue();
			int nodeListSize = smallTreeList.size();
			for (int i = 0; i < nodeListSize; i++) {
				String findID = smallTreeList.get(i).getId();
				List<ListMap2TreeUtils> findList = arrayListMap.get(findID);
				smallTreeList.get(i).setChildren(findList);
			}
		}
		
		List<ListMap2TreeUtils> rootNodeList = arrayListMap.get(ConstantUtil.NUM_UNONE);
		JsonConfig jsonConfig = new JsonConfig();
		jsonConfig.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT);//自动为我排除circle。
		JSONArray jsonArray = JSONArray.fromObject(rootNodeList, jsonConfig);
		return jsonArray.toString();
	}
	/**
	 * List转map的方法
	 * column = [id, text, sjid, checked, othermc....]
	 * 创建时间 
	 * 创建人 yshlin
	 * 
	 * @param m2tList
	 * @param column
	 * @return
	 */
	private static Map<String, List<ListMap2TreeUtils>> getArrayListMap(final List<Map<String, Object>> m2tList, 
			final String[] column, final String rootName) {
		Map<String, List<ListMap2TreeUtils>> arrayListMap = new HashMap<String, List<ListMap2TreeUtils>>();
		List<ListMap2TreeUtils> rootlist = new ArrayList<ListMap2TreeUtils>();
		ListMap2TreeUtils root = new ListMap2TreeUtils();
		root.setId(ConstantUtil.NUM_ZERO);
		root.setText(rootName);
		rootlist.add(root);
		arrayListMap.put(ConstantUtil.NUM_UNONE, rootlist);
		for (int i=m2tList.size()-1;i>=0;i--) {
			Map<String, Object> e = m2tList.get(i);
			ListMap2TreeUtils e2t = new ListMap2TreeUtils();
			e2t.setId(e2t.getString(e, column[0]));
			String text = e2t.getString(e, column[1]);
			String check = column[3].equals("") ? ConstantUtil.NUM_ZERO : e2t.getString(e, column[3]);
			e2t.setChecked(check.equals("") || check.equals(ConstantUtil.NUM_ZERO) ? false : true);
			String textTmp = "";
			if(column.length > 4){
				textTmp = e2t.getOtherText(e, column, 4);
			}
			e2t.setText(text + (textTmp.equals("") ? "" : "[" + textTmp + "]"));
			String fatherId = e2t.getString(e, column[2]);
			if (arrayListMap.get(fatherId) == null) {
				List<ListMap2TreeUtils> list = new ArrayList<ListMap2TreeUtils>();
				list.add(e2t);
				arrayListMap.put(fatherId, list);
			} else {
				List<ListMap2TreeUtils> valueList = arrayListMap.get(fatherId);
				valueList.add(e2t);
				arrayListMap.put(fatherId, valueList);
			}
		}
		return arrayListMap;
	}
	
	/**
	 * List转map的方法
	 * column = [id, mc, parentid]
	 * 创建时间 
	 * 创建人 yshlin
	 * 
	 * @param m2tList
	 * @param column
	 * @return
	 */
	private static Map<String, List<ListMap2TreeUtils>> getArrayListMapFull(final List<Map<String, Object>> m2tList, 
			final String[] column, final String rootName) {
		Map<String, List<ListMap2TreeUtils>> arrayListMap = new HashMap<String, List<ListMap2TreeUtils>>();
		List<ListMap2TreeUtils> rootlist = new ArrayList<ListMap2TreeUtils>();
		ListMap2TreeUtils root = new ListMap2TreeUtils();
		root.setId(ConstantUtil.NUM_ZERO);
		root.setText(rootName);
		rootlist.add(root);
		arrayListMap.put(ConstantUtil.NUM_UNONE, rootlist);
		for (int i=m2tList.size()-1;i>=0;i--) {
			Map<String, Object> e = m2tList.get(i);
			ListMap2TreeUtils e2t = new ListMap2TreeUtils();
			e2t.setId(e2t.getString(e, column[0]));//id
			String text = e2t.getString(e, column[1]);//text
			String check = column[3].equals("") ? ConstantUtil.NUM_ZERO : e2t.getString(e, column[3]);//checked
			e2t.setChecked(check.equals("") || check.equals(ConstantUtil.NUM_ZERO) ? false : true);
			//other text
			String textTmp = "";
			if(column.length > 6){
				textTmp = e2t.getOtherText(e, column, 6);
			}
			e2t.setText(text + (textTmp.equals("") ? "" : "[" + textTmp + "]"));
			e2t.setAttributes(e2t.getColumnAttributes(e, column[5]));
			String fatherId = e2t.getString(e, column[2]);
			if (arrayListMap.get(fatherId) == null) {
				List<ListMap2TreeUtils> list = new ArrayList<ListMap2TreeUtils>();
				list.add(e2t);
				arrayListMap.put(fatherId, list);
			} else {
				List<ListMap2TreeUtils> valueList = arrayListMap.get(fatherId);
				valueList.add(e2t);
				arrayListMap.put(fatherId, valueList);
			}
		}
		return arrayListMap;
	}
	private Map<String, Object> getColumnAttributes(Map<String, Object> m, String attr){
		Map<String, Object> map = new HashMap<String, Object>();
		if(PatternUtil.isNull(attr).equals("")){
			return map;
		}
		String[] val = attr.split(ConstantUtil.SYMB_MH);
		for(int i=0;i<val.length;i++){
			map.put(val[i], getString(m, val[i]));
		}
		return map;
	}
	/**
	 * 附加显示的信息
	 * 
	 * 创建时间  
	 * 创建人 yshlin
	 * @param m
	 * @param column
	 * @param start
	 * @return
	 *
	 */
	private String getOtherText(Map<String, Object> m, String[] column, int start){
		String textTmp = "";
		for(int il=start;il<column.length;il++){
			String tmp = getString(m, column[il]);
			textTmp += textTmp.equals("") ? tmp : ConstantUtil.SYMB_MH + tmp;
		}
		return textTmp;
	}
	private String getString(Map<String, Object> m, String key){
		String tmp = String.valueOf(m.get(key));
		return PatternUtil.isNull(tmp);
	}
}

 

分享到:
评论

相关推荐

    List转换为List

    本知识点重点讲解将List&lt;Bean&gt;转换为List&lt;Map&gt;的过程,这在进行Web开发、数据处理以及与前端交互等场景中非常常见。同时,也会涉及List&lt;Object&gt;转换为List&lt;Object&gt;及list转换为JsonArray的内容。 ### List&lt;Bean&gt;...

    json字符串转成 Map/List

    在Java中,将JSON字符串转换为Map或List是常见的操作,这在处理服务器返回的数据或者进行数据序列化时非常有用。 JSON字符串的结构主要包括对象(键值对的集合,用花括号{}包围)和数组(有序元素的集合,用方括号...

    List<Map<String, List>> data保存到SharedPreference和读取

    在上述代码中,`saveListMapsToSharedPreferences`方法将`List&lt;Map&lt;String, List&lt;String&gt;&gt;&gt;`转换为JSON字符串并保存到SharedPreference,`readListMapsFromSharedPreferences`则读取JSON字符串并反序列化回原数据...

    java转换xml、list、map和json

    "java转换xml、list、map和json" 本文主要讲述了Java中将xml、list、map和json之间的转换的相关知识点。 xml和map之间的转换 在Java中,xml和map之间的转换可以通过使用dom4j库来实现。dom4j是一个Java开源库,...

    在Java 8中将List转换为Map对象方法

    在Java 8中,将List转换为Map对象是一种非常实用的技术,特别是在处理大规模数据时非常有用。本文将详细介绍在Java 8中将List转换为Map对象的方法,并提供了多种实现方式。 首先,我们需要明确Map的key是什么?在这...

    javaScript如何处理从java后台返回的list

    事情: 从java后台返回List&lt;String&gt;类型数据,用于界面显示。但js中想获取它并操作它。直接使用EL表达式,js把它识别成字符串了。不是我想要的啊。。网上搜了搜大家的解决方案…最好的当然是把List集合转成json格式...

    Java List或Map对象和json字符串数据的相互转化

    将java对象list或者map转json数据不需要第三方包,直接使用就可以了,如果你传入的数据不确定是map类型还是list类型,那么自己处理一下就可以了(判断下类型,传入参数改为object)。 如果是json数据转成java对象list...

    spring,cxf,restful发布webservice传递List,Map,List&lt;Map&gt;

    当我们需要在Web服务中传递复杂对象,如List、Map或List&lt;Map&gt;时,可以使用Java的序列化机制。在CXF中,可以通过JAXB(Java Architecture for XML Binding)将Java对象转换为XML格式,以便在网络间传输。例如,如果你...

    json与List-map互换和jar

    总结起来,JSON、`List&lt;Map&gt;`和`Map`之间的互换是Java开发中常见的数据操作,而将项目打包成jar文件则是部署Java应用程序的标准流程。理解并熟练运用这些技术对于提升开发效率和确保代码质量至关重要。

    ajax和json跟java实现List、Map直接传递

    在服务器接收到JSON数据后,可以使用Java的JSON库反序列化为List或Map: ```java // 使用Gson库 import com.google.gson.Gson; Gson gson = new Gson(); // 解析List List&lt;String&gt; deserializedList = gson.from...

    Gson解析(List和Map)格式json数据 - CSDN博客1

    总结来说,Gson是Java开发中处理JSON数据的强大工具,无论是List还是Map格式的JSON,都能轻松地转换为相应的Java对象,便于进一步的数据操作和处理。了解并熟练掌握Gson的使用,对于提升Java开发效率具有显著的帮助...

    jQuery的Ajax实现异步传输List、Map

    这里,`YourPojo`是自定义的Java类,包含一个List字段和一个Map字段,Spring MVC会自动将接收到的JSON数据映射到这个类的实例上。 在实际应用中,你可能还需要关注跨域请求(CORS)问题,因为默认情况下,浏览器...

    json转为list 涉及 java springboot

    JSON 转换为 List 是一种常见的数据处理操作,特别是在 Java 和 Spring Boot 应用程序中。下面我们将详细介绍如何使用 Java 和 Spring Boot 将 JSON 字符串转换为 List。 JSON 转换为 List 的必要性 在 Java 和 ...

    StringtoList和StringtoMap和StringtoObject和StringtoArray

    在处理JSON时,我们有时需要将JSON字符串转换为Java中的各种数据类型,如List、Array、Map和自定义对象。本文将详细介绍如何进行这些转换,并提供一个封装好的转换方法和示例。 1. **String to List** JSON字符串...

    java中ArrayListMapObject与Json互相转换.pdf

    在Java编程中,经常需要处理数据的序列化和反序列化,其中ArrayList&lt;Map&lt;Object&gt;&gt;与JSON之间的转换是一个常见的需求。JSON是一种轻量级的数据交换格式,广泛用于互联网应用中的数据传输,因为它易于阅读和编写,同时...

    androidmap转json字符串、list转json字符串工具类.zip

    Map&lt;String, String&gt; myMap = new HashMap&lt;&gt;(); myMap.put("name", "John"); myMap.put("age", "30"); String jsonMap = mapToJsonString(myMap); // 转换Map List&lt;String&gt; myList = Arrays.asList("Apple", ...

    java对象List,Map转json格式

    本篇文章将深入探讨如何将Java中的List和Map对象转化为JSON格式,并涉及与AJAX交互的相关知识。 1. **Java JSON库**: 在Java中,我们可以使用多种库来实现对象到JSON的转换,如Jackson、Gson、Fastjson等。这里以...

    Java读取json文件,并转化为map取值

    在Java编程中,处理JSON数据是一项常见的任务,特别是在与服务器进行数据交互时。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。本教程将深入讲解...

    json 与java之间数据的转换

    在Java中,处理JSON数据通常需要借助第三方库,如Jackson、Gson、Fastjson等。本教程将深入探讨JSON与Java之间的数据转换,包括JSON对象到Java对象以及Java对象到JSON对象的转换。 首先,为了进行JSON操作,我们...

    JSON与JAVA数据的转换

    而在Java编程语言中,处理JSON数据通常涉及到将JSON字符串或对象转换为Java对象(如`Map`、`List`、自定义Java Bean类等),以及反之亦然的过程。 #### JSON与Java数据类型的对应关系 1. **JSON Object &lt;-&gt; Java ...

Global site tag (gtag.js) - Google Analytics