① java如何給有層級關系的JSON字元串做遞歸處理
先遞歸出拿毀一個 node對象,再將node對象轉換成json串。直接進行字元串的json操作不建型旦議。
class Node{
private String id;
private String parentId;
private List<Node> children;
public void addChildren(Node child){
getChildren().add(child);
}
public List<Node> getChildren();
public String transformTojson(Node node ,StringBuffer jsonStr){
//遞歸
if(jsonStr ==null){
StringBuffer jsonStr=new ();
}
if(node.id!=null){
//拼接父節點json串
jsonStr.append(id:node.id,children:#&children);
}
List childNodeList = node.getChildren();
StringBuffer childrenSB = new();
for( Node node :childNodeList){
childrenSB=transformTojson(node);
}
sonStr.replaceFirst("#&children",childrenSB);
return jsonStr;
}
}
偽代碼大概這樣。
transformTojson方法可以不自己寫,直接使用第卜敏擾三方工具jar包的json轉化方法,比如gjson。
② 如何用java遞歸生成帶children的json串
這個問題有點沒意義,因為java已經有相應的jar了,不論是阿里的fastjson,還是gson,又或者是jackson,都是已經很成熟的jar了。如果非要自己去寫的話,就需要用到反射了。簡單來說,就是獲取對象的所有屬性。復雜說的話,要判斷對象的屬性,判斷屬性類型,判斷屬性值是否為null,判斷對象是否是有transient修飾,判斷字元串裡面是否有雙引號等等。然後通過StringBuffer或是StringBuilder去拼接字元串,來生成json串,至於是StringBuffer還是StringBuilder就看你的需要再決定了
③ java中json不確定多少層
使用遞臘純歸函數。java中json不確定多少層需要使用遞歸函數,要獲取的值就需要一個路徑來表示,路徑可以用數組來標記,這個Json字元友談串有多層嵌套好局碰,還有不固定的元素。只要學會了方法,不管多少層也是能分析出來的。