java输出一个格式的树

时间:2012-05-31 02:57:38

标签: java json

我想用java为JQuery Dynatree输出一个树,但是失败了。

public class Category {
    String name;

    Category parentCategory;

    public Category(String name, Category parentCategory) {
        super();
        this.name = name;
        this.parentCategory = parentCategory;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Category getParentCategory() {
        return parentCategory;
    }

    public void setParentCategory(Category parentCategory) {
        this.parentCategory = parentCategory;
    }
}

主要课程

import java.util.ArrayList;
import java.util.List;

public class Main {

    static Category root;
    static Category category1;
    static Category category11;
    static Category category12;
    static Category category2;
    static Category category21;
    static Category category22;

    static Category category3;

    public static void main(String[] args) {
         root = new Category("root", null);

         category1 = new Category("c1", root);
         category11 = new Category("c11", category1);
         category12 = new Category("c12", category1);

         category2 = new Category("c2", root);
         category21 = new Category("c21", category2);
         category22 = new Category("c22", category2);   

         category3 = new Category("c3", root);

         print(root);
    }

    public static void print(Category category){    
        List<Category> childList = getChild(category);

        if(category.getParentCategory() == null){ //root
            System.out.println("{title:"+category.getName()+",key:"+category.getName()+",");
        }
        else {
            //if(childList.size()==0){
            //  System.out.println("{title:"+category.getName()+",key:"+category.getName()+",");
            //}
        //  else {
                System.out.println("children:[{title:"+category.getName()+",key:"+category.getName()+",");
        //  }           
        }           

        if(childList.size()==0) return;
        for(Category child : childList){
            print(child);
        }   
        System.out.println("}]");
        System.out.println("}");
    }

    public static List<Category> getChild(Category category){
        List<Category> childList = new ArrayList<Category>();
        if("root".equals(category.getName())){
            childList.add(category1);
            childList.add(category2);
            childList.add(category3);

            return childList;
        }

        if("c1".equals(category.getName())){
            childList.add(category11);
            childList.add(category12);

            return childList;           
        }

        if("c2".equals(category.getName())){
            childList.add(category21);
            childList.add(category22);

            return childList;           
        }

        return childList;// empty

    }

}

我的输出不正确,应该是这样的:

 {title: "root", key: "root", 
      children: [
        {title: "c1", activate: true,
          children: [
            {title: "c11", key: "c11" },
            {title: "c12", key: "c12" }
          ]
        },
        {title: "c2", select: true,
          children: [
            {title: "c21", key: "c21" },
            {title: "c22", key: "c22" }
          ]
        },
        {title: "c3", hideCheckbox: true }       
      ]
    }

我的代码有bug,如何解决?或者使用这种设计,是否可以得到这个结果?

由于

1 个答案:

答案 0 :(得分:1)

似乎输出是JSON。

你试过gson吗?您不需要编写代码来序列化数据,gson会将对象序列化为JSON。