请教一个spring mvc自动转换json文件的问题

问题描述

自己学习easy ui+spring3 web mvc+spring3 mvc+mybatis,做了一些尝试,现在有一个功能实现出了点问题,特来请教大家:首先,功能说明:其实很简单,就是要根据后台返回的json数据在页面创建一个combotree,这个对象需要的是一个树状的json格式。我的做法:整个spring环境配置都没问题,这儿就不说了,关于spring mvc的配置,加入了如下内容,支持自动的json转换:<bean id="mappingJacksonHttpMessageConverter"class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" />实现的controller的主要代码如下:/** * 根据查询结果生成树,自动转换成json树。 */@RequestMapping(value = "/subtree", method = RequestMethod.POST)@ResponseBodypublic ArrayList<BeanTree> subtree(String swjgdm) throws Exception {Tree tree = new Tree();ArrayList<BeanTree> treelist = null;ArrayList<BeanTree> nodelist = new ArrayList<BeanTree>();for (int i = 0; i <= 1; i++) {BeanTree node = new BeanTree();node.setId("1640100000" + i);node.setText("第一季" + i);node.setFldtag("备注" + i);nodelist.add(node);for (int j = 1; j <= 3; j++) {node = new BeanTree();node.setId("164010000" + i + j);node.setText("第二季" + i+j);node.setFldtag("备注" + i+j);node.setParentid("1640100000" + i);nodelist.add(node);for (int k = 1; k <= 3; k++) {node = new BeanTree();node.setId("16401000" + i + j + k);node.setText("第三季" + i + j+ k);node.setFldtag("备注" + i + j+ k);node.setParentid("164010000" + i + j);nodelist.add(node);}}}treelist = tree.createTree(nodelist);logger.info("创建树", treelist);return treelist;}这儿使用了两个类来创建树状的结构:BeaTree.javapackage com.person.camelt.common.utils;import java.util.ArrayList;public class BeanTree {private String id;private String text;private String parentid;private boolean leaf;private String fldtag;private ArrayList<BeanTree> child;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 getParentid() {return parentid;}public void setParentid(String parentid) {this.parentid = parentid;}public boolean isLeaf() {return leaf;}public void setLeaf(boolean leaf) {this.leaf = leaf;}public String getFldtag() {return fldtag;}public void setFldtag(String fldtag) {this.fldtag = fldtag;}public ArrayList<BeanTree> getChild() {return child;}public void setChild(ArrayList<BeanTree> child) {this.child = child;}}Tree.java用来创建树状结构package com.person.camelt.common.utils;import java.util.ArrayList;public class Tree {// 将节点数组转换为树结构public ArrayList<BeanTree> createTree(ArrayList<BeanTree> lListBean) {ArrayList<BeanTree> aListBean = new ArrayList<BeanTree>();int num = lListBean.size();for (int i = 0; i < num; i++) {// 当所有的节点都不是当前节点的父节点时,说明该节点为“跟节点”,根节点可以有多个。boolean flag = true;for (int j = 0; j < num; j++) {if (lListBean.get(j).getId().equals(lListBean.get(i).getParentid())) {flag = false;break;}}if (flag) {lListBean.get(i).setParentid("");aListBean.add(lListBean.get(i));}}if (lListBean != null) {settleNode(aListBean, lListBean);}return aListBean;}// 递归整理树节点public static void settleNode(ArrayList<BeanTree> aListBean,ArrayList<BeanTree> lListBean) {if (aListBean.size() < lListBean.size()) {int num = lListBean.size();for (BeanTree bean : aListBean) {ArrayList<BeanTree> aListBeanC = new ArrayList<BeanTree>();for (int i = 0; i < num; i++) {if (bean.getId().equals(lListBean.get(i).getParentid())) {aListBeanC.add(lListBean.get(i));}}bean.setChild(aListBeanC);settleNode(aListBeanC, lListBean);}}}}然后,客户端的调试信息所获得的json数据如下:[{"id":"16401000000","text":"第一季0","parentid":"","leaf":false,"fldtag":"备注0","child":[{"id":"16401000001","text":"第二季01","parentid":"16401000000","leaf":false,"fldtag":"备注01","child":[{"id":"16401000011","text":"第三季011","parentid":"16401000001","leaf":false,"fldtag":"备注011","child":[{"id":"16401000111","text":"第三季111","parentid":"16401000011","leaf":false,"fldtag":"备注111","child":[]},{"id":"16401000112","text":"第三季112","parentid":"16401000011","leaf":false,"fldtag":"备注112","child":[]},{"id":"16401000113","text":"第三季113","parentid":"16401000011","leaf":false,"fldtag":"备注113","child":[]}]},{"id":"16401000012","text":"第三季012","parentid":"16401000001","leaf":false,"fldtag":"备注012","child":[{"id":"16401000121","text":"第三季121","parentid":"16401000012","leaf":false,"fldtag":"备注121","child":[]},{"id":"16401000122","text":"第三季122","parentid":"16401000012","leaf":false,"fldtag":"备注122","child":[]},{"id":"16401000123","text":"第三季123","parentid":"16401000012","leaf":false,"fldtag":"备注123","child":[]}]},{"id":"16401000013","text":"第三季013","parentid":"16401000001","leaf":false,"fldtag":"备注013","child":[{"id":"16401000131","text":"第三季131","parentid":"16401000013","leaf":false,"fldtag":"备注131","child":[]},{"id":"16401000132","text":"第三季132","parentid":"16401000013","leaf":false,"fldtag":"备注132","child":[]},{"id":"16401000133","text":"第三季133","parentid":"16401000013","leaf":false,"fldtag":"备注133","child":[]}]},{"id":"16401000011","text"这儿就不把所有的数据列出来了。现在的问题是:根据easy ui的文档,combotree需要的json数据格式应和上面列出来的差不多,但是,有两点差别。 首先,文档要求的json数据中,子节点使用的是“children”,而生成的文档却是“child”。 其次,生成的combotree只能显示出来树的第一级内容,后面的都显示不出来。请问大家有没有什么好的办法,谢谢了。

解决方案

首先,文档要求的json数据中,子节点使用的是“children”,而生成的文档却是“child”。 那就把child字段 改成 chidren 其次,生成的combotree只能显示出来树的第一级内容,后面的都显示不出来。 第一个问题造成的
解决方案二:
1L正解

时间: 2024-08-22 15:23:16

请教一个spring mvc自动转换json文件的问题的相关文章

IntelliJ IDEA:Getting Started with Spring MVC, Hibernate and JSON实践

原文:IntelliJ IDEA:Getting Started with Spring MVC, Hibernate and JSON实践 最近把编辑器换成IntelliJ IDEA,主要是Eclipse中处理Maven项目很不方便,很早就听说IntelliJ IDEA的大名了,但是一直没机会试试.最近终于下载安装了,由于是新手,决定尝试个Tutorials,最终找了个熟悉点的项目,就是Getting Started with Spring MVC, Hibernate and JSON(ht

Java Spring MVC 上传下载文件配置及controller方法详解_java

下载: 1.在spring-mvc中配置(用于100M以下的文件下载) <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> <property name="messageConverters"> <list> <!--配置下载返回类型--> <bean class="or

基于Spring Mvc实现的Excel文件上传下载

最近工作遇到一个需求,需要下载excel模板,编辑后上传解析存储到数据库.因此为了更好的理解公司框架,我就自己先用spring mvc实现了一个样例. 基础框架 之前曾经介绍过一个最简单的spring mvc的项目如何搭建,传送门在这里. 这次就基于这个工程,继续实现上传下载的小例子.需要做下面的事情: 1 增加index.html,添加form提交文件 2 引入commons-fileupload.commons-io.jxl等工具包 3 创建upload download接口 4 注入mul

Spring MVC返回的json去除根节点名称的方法_java

spring xml中配置视图如果是如下 <property name="defaultViews"> <list> <bean class="org.springframework.web.servlet.view.json.MappingJackson2JsonView"> </bean> </list> </property> 那么返回结果会是: {"commonAjaxResp

python自动格式化json文件的方法_python

本文实例讲述了python自动格式化json文件的方法.分享给大家供大家参考.具体如下: 这里主要实现将代码混乱的json文件格式化. 还有一小堆python常用算法代码 完整实例代码点击此处本站下载. class JsonFormatter: def __init__(self,intend=4,name=""): self.name=name self.intend=intend self.stack=[] self.obj=None self.source=self.get_so

求助一个spring mvc注解权限验证的问题

问题描述 求助一个spring mvc注解权限验证的问题 ![嘟嘟 解决方案 解决方案二: 解决方案三: 解决方案四: csdn太慢了... 解决方案五: 怎么删除重复的楼层? 解决方案六: 怎么删除重复的楼层?

请教一个问题,我把OVF文件导入到AWS上面去执行命令后提示没有默认的VPC,因我把之前把默认的VPC删了,自己建了一个VPC?

问题描述 请教一个问题,我把OVF文件导入到AWS上面去执行命令后提示没有默认的VPC,因我把之前把默认的VPC删了,自己建了一个VPC?

Windows pyqt4 bat自动转换UI文件--&gt;.pyw文件

/***************************************************************************** * Windows pyqt4 bat自动转换UI文件-->.pyw文件 * 声明: * 由于在Windows下面操作pyqt4,将UI文件转换成.pyw文件是需要到dos窗口去 * 执行pyuic4命令,每次感觉都很麻烦,于是想起可以使用bat文件进行批处理,这 * 样的话,直接双击运行bat文件就行了. * * 2015-12-30 深

spring mvc前端传json,后端怎么直接对象获取

问题描述 在项目中碰到问题了就是我前端ajax传一个json过了, 我后端用在spring mvc怎么直接用对象去接收? 解决方案 可以在ajax里面填写$.ajax({ url: "/spring-mvc-json/rest/cont/person", type: 'POST', dataType: 'json', data: "{"name":"hmkcode","id":2}", contentTyp