自身一對多關聯模型的JSON轉換
最近又遇到了一個問題, 這里有一個一對多自身關聯的模型 1
Class Tree
2
{
3
private String id;
4
private String name;
5
private Set<tree> children = new HashSet<Tree>();
6
public void setId(String id)
7
{
8
this.id = id;
9
}
10
public String getId()
11
{
12
return this.id;
13
}
14

15
}
然后我用JSON把這個模型轉換成string的時候會報錯:will throw a JSONException if a cycle is found.后來去查了下JSON的API發現是我的JSON轉換策略有問題。原文是這樣的:
2

3

4

5

6

7

8

9

10

11

12

13

14



15

-
public abstract class CycleDetectionStrategy
- extends Object
Base class for cycle detection in a hierarchy.
The JSON spec forbides cycles in a hierarchy and most parsers will raise and error when a cycle is detected. This class defines a contract for handling those cycles and two base implementations:
- STRICT - will throw a JSONException if a cycle is found.
- LENIENT - will return an empty array or null object if a cycle is found.
說的很清楚了所以必須做點修改像這樣:
1
public class TreeAction extends BaseActionSupport{
2
private static final CycleDetectionStrategy CycleDetectionStrategy = null;
3
public String getAllTree()
4
{
5
JsonConfig jsonConfig=new JsonConfig();
6
jsonConfig.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT);
7
tree = regionService.getTreeChildren("402881821a7fbf10011a7fc2d3ae0001");
8
JSONObject array = JSONObject.fromObject(tree,jsonConfig);
9
System.out.println("$$$$$$$$$$"+array.toString()+"$$$$$$$$$$$$$$");
10
return SUCCESS;
11
}
12
}

2

3

4

5

6

7

8

9

10

11

12

這樣修改以后轉換就正常啦~~~。呵呵,HIBERNATE還有好多問題我沒解決煩惱中。。。。。。

posted on 2008-06-20 22:59 Cloud kensin 閱讀(1086) 評論(0) 編輯 收藏 所屬分類: Java