0

I want to use java to output a tree for JQuery Dynatree, but failed.

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;
    }
}

Main class

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

    }

}

my output is not correct, it should be this:

 {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 }       
      ]
    }

My code has bug, how to fix it ? or using this design, is it possible to get this result ?

Thanks

1 Answer 1

1

It seems that the output is JSON.

Have you tried gson? You don't need to write code to serialize the data, gson will serialize the object as JSON for you.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.