將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格式結構...