2012-05-31 32 views
0

我想用java爲JQuery Dynatree輸出一棵樹,但失敗了。java爲一種格式輸出樹

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

我的代碼有錯誤,如何解決呢?或者使用這種設計,是否有可能得到這個結果?

謝謝

回答

1

看來,輸出是JSON。

你試過gson?您不需要編寫代碼來序列化數據,gson會將對象序列化爲JSON。