json轉樹,json層級展開為list

2021-10-05 11:56:23 字數 1659 閱讀 3678

將json轉成樹狀結構,然後展開成list,有key就取key,沒key就取value,通過遞迴實現

jsonnode 是節點類,其中的key就是json的key,value是如果沒有子節點的json的value

建這倆類唯一的好處就是把jsonobject格式化成乙個確定的類,方便遞迴,就不用每次獲取value的時候多次遍歷看下面有多少個子節點,關鍵不知道層數,不方便遞迴

children是子節點(可以為另乙個json,或者json array)

public class jsonnode 

public void setkey(string key)

public int getlevel()

public void setlevel(int level)

public string getvalue()

public void setvalue(string value)

public listgetchildren()

public void setchildren(listchildren)

}

jsontree 通過遞迴遍歷 將json的key和value(如果有的話),及其子節點的遞迴列印出來注:

json轉樹,不符合標準的樹定義,有兩點需要轉換一下,方便遞迴

1,root沒有key,key就暫定為"root",

2,如果某節點為 jsonarray,key就暫定為"i'm arr"

public class jsontree 

node.setchildren(childrenlist);

} else if (value instanceof jsonarray)

node.setchildren(childrenlist);

} else

return node;

}public static linkedlist> binarytreepaths(jsonnode root)

public static void getpath(jsonnode root, linkedlistpath, linkedlist> paths) else }}

}public static void main(string args) );

}

其中資料結構部分如下圖所示

如**所示,輸入為

,

"2": ,

"3": [, ]

}

輸出為:

root 1 msg err1 

root 1 error 001

root 1 status 1

root 2 msg err2

root 2 error 002

root 2 status 1

root 3 i'm arr msg err1

root 3 i'm arr error 001

root 3 i'm arr status 1

root 3 i'm arr msg err2

root 3 i'm arr error 002

root 3 i'm arr status 1

json 轉字典 字典轉json

brief 把格式化的json格式的字串轉換成字典 param jsonstring json格式的字串 return 返回字典 json格式字串轉字典 nsdictionary dictionarywithjsonstring nsstring jsonstring nsdata jsondata...

json轉實體,json轉list

json轉換 注 以下全用的是com.alibaba.fastjson 1.實體轉string轉json user user new user user.age 18 user,name 張三 實體轉string string json json.tojsonstring result string...

json轉物件 物件轉json

我們經常會用到json,所以在c 裡就會經常有物件or物件陣列轉json,json轉物件or物件陣列。ps 物件或者json可能是 or,也就是json屬性or json陣列形式,或者json物件屬性裡巢狀,巢狀屬性.無限級巢狀都可以實現。前提 我們定義的物件,或者巢狀物件 一定要和json格式結構...