涧头乡的村庄可以装电信装宽带宽带吗

jquery 对 Json 的各种遍历-前端开发博客推荐文章 12467Views 2549Views 854Views 1903Views 1593Views热门文章
110,077Views
59,934Views
49,476Views
7,442Views
6,619Views
6,188Views对这篇文章不满意吗?百度搜索:");字符串形式的树节点信息,如何转换层具有层次结构的json数据格式
原始的字符串树节点信息({id,pid,xx,xxx,xx}),每个节点信息用分号分割:
var resultSet=&2,0,333,生产管理系统;8,2,日历作业率查询,http://www.5,2,生产日志查询,;6,2,故障时间,;7,2,月作业时间查询&;
转换成json数据格式:
&var indexData={ id:2,pid:0,text: '综合管理系统',isexpand:false, children: [
&&{id:33,pid:2,url:&
:&人资管理系统&,children:[{url:&
:&原件管理系统dae&}]}
我写的脚本:
&script type=&text/javascript&& //对象模板 function treeNode(id,pid,url,text,children){ &this.id = &this.pid = &this.url = &this.text = &this.children = &}
&&&&&& //root是根节点,nodes&是个数组,通过前面变量resultSet.split(&;&)得到的每个节点信息& &function buildTree(root,nodes){ &&//保存root子节点 &&var childrens = new Array();& &&//遍历得到root的子节点 &&for(i=0;i&nodes.i++){ &&&&&&& //分割得到节点的每个属性 &&var attrs = nodes[i].split(&,&); &&//定义一个新节点,& &&var newNode = new treeNode(attrs[0],attrs[1],attrs[2],attrs[3],new Array()); &&alert(newNode.children.length); &&&& //如果找到子节点 &&&& if(newNode.pid==root.id){&& &&&& &&&//递归查找newNode的子节点 &&&buildTree(newNode,nodes); &&&//把它添加到root的childrens中 &&&&& childrens[childrens.length] = newN& &&&& &&&&& }&&& & &&&&&&&&&&&&&&& } &&//查找完添加到root的children属性中& & root.children= &}
&script type=&text/javascript&&
&///var children = new Array();
&//document.write(children.length);
&var resultSet=&9,2,月轧费率查询,;8,2,日历作业率查询,http://www.5,2,生产日志查询,;6,2,故障时间,;7,2,月作业时间查询&;
&var nodes = resultSet.split(&;&);
&var attrs = (&2,0,333,生产管理系统&).split(&,&);
&var root = new treeNode(attrs[0],attrs[1],attrs[2],attrs[3],new Array());
&buildTree(root,nodes);
&alert(&root.children.length=&+root.children.length);
问题:只添加了一个,不知道递归哪出了问题????
for(i=0;i&nodes.i++){
for(var i=0;i&nodes.i++){ 如果不加var定义,i会变成全局变量,第一次递归后i为5,到主程序就直接退出循环了,所以只添加了一个node
--- 共有 1 条评论 ---
谢谢啊,大神啊!!我不怎么写过js,所以基础不是很好,开始我用var i的时候,它dw老是提示错误,所以我以为不能用var i.3822人阅读
如图的数据库表,其中PvGroupID是其父结点的ID,VGroupID是自身的ID,名为总分组的结点,是根结点,他没有父结点
将该表的接树形结构转换成JSON数据表达格式。
例如:JSON=[{&text&:&总分组&,&nodes&:[{&text&:&运德&,&nodes&:[{&text&:&运德子1&},{&text&:&运德子2&}]},{&text&:&运美&,&nodes&:[{&text&:&运美子1&},{&text&:&运美子2&}]}]}]
这个JSON表示如下结构
生成这样的JSON运用一个递归算法
String toJson(long id) throws Exception{
String json1=&&;
List&VehicleGroupInfoBo& list= vGroupDao.getVGroupList(id);
VehicleGroupInfoBo vgbo=vGroupDao.getVehicleGroupInfoBoById(id);
if(list==null){
List&VehicleInfoBo& listv=vInfoDao.getVehicleList(id);
if(listv==null){
json1=json1+&{\&text\&:\&&+vgbo.getGroupName()+&\&}&;
json1=json1+&{\&text\&:\&&+vgbo.getGroupName()+&\&,\&nodes\&:[&;
for(int i=0;i&listv.size();i++){
VehicleInfoBo vbo=listv.get(i);
if(i==0&&i!=listv.size()-1){
json1=json1+&{\&text\&:\&&+vbo.getVehicleLic()+&\&},&;
else if(i&0&&i&listv.size()-1){
json1=json1+&{\&text\&:\&&+vbo.getVehicleLic()+&\&},&;
else if(i==listv.size()-1){
json1=json1+&{\&text\&:\&&+vbo.getVehicleLic()+&\&}]&;
json1=json1+&}&;
json1=json1+&{\&text\&:\&&+vgbo.getGroupName()+&\&,\&nodes\&:[&;
for(int j=0;j&list.size();j++){
if(j==0&&j!=list.size()-1){
json1=json1+toJson(list.get(j).getVGroupID())+&,&;
else if(j&0&&j&list.size()-1){
json1=json1+toJson(list.get(j).getVGroupID())+&,&;
else if(j==list.size()-1){
json1=json1+toJson(list.get(j).getVGroupID())+&]&;
json1=json1+&}&;
return json1;
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:7969次
排名:千里之外
(1)(5)(2)(5)JSON复杂数据处理之Json树形结构数据转Java对象并存储到数据库的实现
作者:baozhengw
字体:[ ] 类型:转载 时间:
这篇文章主要介绍了JSON复杂数据处理之Json树形结构数据转Java对象并存储到数据库的实现的相关资料,需要的朋友可以参考下
&在网站开发中经常遇到级联数据的展示,比如选择城市的时候弹出的省市县选择界面。很多前端制作人员习惯于从JSON中而不是从数据库中获取省市县数据。那么在选择了省市县中的某一个城市 ,存储到数据库中需要存储所选城市的代码。所以需要一个能将JSON数据(一般存储在javascript脚本中)结构全部导入到数据库中的功能。
JSON的特点是支持层级结构、支持数组表示的对象 。下面的示例介绍如何将JSON的省市县数据保存到数据库中,实现原理非常简单,就是利用JSON的java工具包API,将层次结构的JSON对象数组通过递归的方式首选转换为Java对象数组,然后保存到数据库中。
实现步骤是:
(一)首先定义一个JsonItem实体类:
package org.openjweb.core.
public class JsonItem
private String sub_
private String sub_
private JsonItem[]
public JsonItem[] getItems() {
public void setItems(JsonItem[] items) {
this.items =
public String getSub_id() {
return sub_
public void setSub_id(String sub_id) {
this.sub_id = sub_
public String getSub_name() {
return sub_
public void setSub_name(String sub_name) {
this.sub_name = sub_
(二)定义一个工具类,在工具类中读取Json数据文件,并进行递归调用 :
public static String importJson(String fullFileName,String jsonType,String encoding,HttpServletRequest request) throws Exception
//Json转换为实体类参考:/hoojo/archive//2023805.html
String sReturn = "";
String jsonData = "";
jsonData = FileUtil.getTextFileContent(fullFileName, encoding);
catch(Exception ex)
sReturn ="读Json文件失败!";
//获取rootId
jsonData = jsonData.replace("\"items\":\"\"", ""); //去掉空的 items
String parentId = jsonData.substring(jsonData.indexOf("\"id\":")+5);
parentId = parentId.substring(0,parentId.indexOf(",")).trim();
parentId = parentId.replace("\"", "");
("root id=="+parentId);
String parentName = jsonData.substring(jsonData.indexOf("\"name\":")+7);
parentName = parentName.substring(0,parentName.indexOf(",")).trim();
parentName = parentName.replace("\"", "");
("root Name=="+parentName);
String rootData = jsonData.substring(jsonData.indexOf("\"items\":")+8,jsonData.lastIndexOf("}"));
rootData = jsonData.substring(jsonData.indexOf("[")+1,jsonData.lastIndexOf("]"));
//不同json的id,name表示不一样,统一换成sub_id,subname以便与JsonItem的类属性匹配
// 替换后方便统一处理
rootData = rootData.replace("city_id", "sub_id");
rootData = rootData.replace("sub_city", "sub_name");
rootData = rootData.replace("city", "sub_name");
rootData = rootData.replace("sub_txt", "sub_name");
rootData = rootData.replace("sub_industry", "sub_name");
rootData = rootData.replace("industry_id", "sub_id");
rootData = rootData.replace("industry", "sub_name");
rootData = rootData.replace("sub_profession", "sub_name");
rootData = rootData.replace("profession_id", "sub_id");
rootData = rootData.replace("profession", "sub_name");
//将rootData转换为array
rootData = "[" + rootData + "]";
FileUtil.str2file(rootData, "d:/jsonData.txt", "utf-8");//存储到磁盘检查字符串转换是否正确
catch(Exception ex)
JSONArray jsonArray = JSONArray.fromObject(rootData);
Object[] os = jsonArray.toArray();
JsonItem[] items = (JsonItem[]) JSONArray.toArray(jsonArray, JsonItem.class);
saveJsonEnt(jsonType,parentId,parentName,"-1",new Long(1));
dealJson(items,parentId,jsonType,new Long(1));
private static void saveJsonEnt (String jsonType,String jsonId,String jsonName,String parentId,Long levelId) throws Exception
(jsonType+"/"+jsonId+"/"+jsonName+"/"+parentId+"/"+String.valueOf(levelId));
CommJsonData ent = new CommJsonData();
ent.setJsonType(jsonType);
ent.setJsonCode(jsonId);
ent.setJsonName(jsonName);
ent.setRowId(StringUtil.getUUID());
ent.setParentCode(parentId);
ent.setLevelId(levelId);
IDBSupportService service = (IDBSupportService)ServiceLocator.getBean("IDBSupportService3");
service.saveOrUpdate(ent);
private static String dealJson(JsonItem[] jsonItem,String parentId,String jsonType,Long level)
String sReturn = "";
if(jsonItem!=null&&jsonItem.length&0)
for(int i=0;i&jsonItem.i++)
JsonItem ent = jsonItem[i];
//System.out.println(ent.getSub_id());
//System.out.println(ent.getSub_name());
saveJsonEnt(jsonType,ent.getSub_id(),ent.getSub_name(),parentId,level+1);
catch(Exception ex)
ex.printStackTrace();
if(ent.getItems()!=null)
//System.out.println("子项数:"+ent.getItems().length);
dealJson(ent.getItems(),ent.getSub_id(),jsonType,level+1);
//System.out.println("没有子项!");
示例数据(部分):
"name": "全国",
"description": "崇德易城市数据",
"modified": "2012年08月",
"copyright": "/",
"items": [
"city": "北京市",
"city_id": "",
"items": [
"sub_city":"东城区",
"sub_id":""
"sub_city":"西城区",
"sub_id":""
"sub_city":"朝阳区",
"sub_id":""
"sub_city":"丰台区",
"sub_id":""
"sub_city":"石景山区",
"sub_id":""
"sub_city":"海淀区",
"sub_id":""
"sub_city":"门头沟区",
"sub_id":""
"sub_city":"房山区",
"sub_id":""
"sub_city":"通州区",
"sub_id":""
"sub_city":"顺义区",
"sub_id":""
"sub_city":"昌平区",
"sub_id":""
"sub_city":"大兴区",
"sub_id":""
"sub_city":"怀柔区",
"sub_id":""
"sub_city":"平谷区",
"sub_id":""
"sub_city":"延庆县",
"sub_id":""
"sub_city":"密云县",
"sub_id":""
"city": "天津市",
"city_id": "",
"items": [
"sub_city":"和平区",
"sub_id":""
以上所述是小编给大家介绍的JSON复杂数据处理之Json树形结构数据转Java对象并存储到数据库的实现
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具

我要回帖

更多关于 电信宽带报装 的文章

 

随机推荐