java生成三级json对象

  在网页中我们经常会用到三级联动下拉菜单,而从后台获得的数据一般是json格式的,故需要返回三级json对象,另外有一些特殊情况也需要用到三级的json来实现。

1、文件Node1.java,定义Node1对象:

package com.soecode.hbdw.powstation.node;

import java.util.List;

public class Node1 {
	private String name;
	private List<Node2> cName;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public List<Node2> getcName() {
		return cName;
	}
	public void setcName(List<Node2> cName) {
		this.cName = cName;
	}
	
}


2、文件Node2.java,定义Node2对象:

package com.soecode.hbdw.powstation.node;

import java.util.List;

public class Node2 {
	private String name;
	private List<String> cName;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public List<String> getcName() {
		return cName;
	}
	public void setcName(List<String> cName) {
		this.cName = cName;
	}
	
}


3、转换代码:

//显示所有
	@ResponseBody
	@RequestMapping(value = "/queryAll")
	private List<Node1> getlist(Model model) {
		List<PowStation> powStations=powStationService.getList();
		int i,j,k;
		//flag1和flag2用以标志对象存在与否,存在为false,否则为true
		Boolean flag1,flag2;
		List<Node1> nodes=new ArrayList<Node1>();
		for(i=0;i<powStations.size();i++){
			PowStation powstation=powStations.get(i);
			String string1=powstation.getSubunit();
			String string2=powstation.getName();
			String string3=powstation.getNum();
			flag1=true;
			flag2=true;
			if (string1!=null) {
				Node1 node1=new Node1();
				Node2 node2=new Node2();
				List<String> list1=new ArrayList<String>();
				List<Node2> list2=new ArrayList<Node2>();
				for(j=0;j<nodes.size();j++){
					if (string1.equals(nodes.get(j).getName())) {
						flag1=false;
						//break;
						for(k=0;k<nodes.get(j).getcName().size();k++){
							if (string2.equals(nodes.get(j).getcName().get(k).getName())) {
								//设置node2结点,并添加node2结点到node1
								node2.setName(string2);
								list1=nodes.get(j).getcName().get(k).getcName();
								list1.add(string3);
								node2.setcName(list1);
								//设置node1结点,并添加node2结点到nodes
								node1.setName(string1);
								list2=nodes.get(j).getcName();
								list2.set(k, node2);
								node1.setcName(list2);
								nodes.set(j, node1);
								flag2=false;
								break;
							}
						}
						if (flag2) {
							//设置node2结点,并添加node2结点到node1
							node2.setName(string2);
							//list1=node2.getcName();
							list1.add(string3);
							node2.setcName(list1);
							//设置node1结点,并添加node2结点到nodes
							node1.setName(string1);
							list2=nodes.get(j).getcName();
							list2.add(node2);
							node1.setcName(list2);	
							nodes.set(j, node1);
							
						}
					} 
				}
				if(flag1){
					//设置node2结点,并添加node2结点到node1
					node2.setName(string2);
					list1.add(string3);
					node2.setcName(list1);
					//设置node1结点,并添加node2结点到nodes
					node1.setName(string1);
					list2.add(node2);
					node1.setcName(list2);					
					nodes.add(node1);
				}
			}	
		}
		return nodes;
	}


  java对象实际以树的结构存储,以多级列表List和自定义javaBean相结合来实现树的存储,并通过@Responsebody注解来实现将返回值自动转化为三级json的对象。

  其中@RequestMapping(value = "/queryAll")是用来实现页面地址映射的,在这里可以不用管它。

  powStations是一个List列表对象,PowStation是一个pojo,包括id和表单的三级元素,第一级subunit,第二级name,第三级num。

  另外,需要注意第一个if判断,string1获取的对象是通过PowStation从数据库中获取的,当对象为null时,不能用equals()和matchs()判断,因为string1对象相当于未初始化,没有目标。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值