javascript - js解析多層嵌套json數據,遞歸調用
問題描述
需要處理接口返回的json數據,轉為Easyui Tree可以接收的數據格式,怎么處理多層的json數據,json的數據返回大小不一定,屬性也有變化,結構類似,只有@desc是根目錄
例子:{
'srvcfg': { 'tokenswitch': {'token_switch': { '#text': '0', '@desc': '切換開關'},'@desc': 'token切換' }, 'commoncfg': {'srvtype': { 'count': {'#text': '1','@desc': '數量' }, 'srvtypeid1': {'#text': '28900','@desc': '類型' }, '@desc': 'SrvTypeID的數量'},'binanry_msg_queue': { 'count': {'#text': '2','@desc': '消息隊列數量' }, 'queuenum1': {'#text': '10000','@desc': '消息隊列號' }, 'queuenum2': {'#text': '20000','@desc': '消息隊列最小長度' }, 'queuesize1': {'#text': '300','@desc': '小消息隊列' }, 'queuesize2': {'#text': '10000','@desc': '消息隊列最大長度' }, '@desc': '消息隊列配置'},'srv_pwd': { 'count': {'#text': '1','@desc': '約定密碼數量' }, 'srvtypeid1': {'#text': '28900','@desc': '端口' }, 'pwd1': {'#text': 'dtvspwd','@desc': 'dtvs密碼' }, '@desc': '服務器之間約定的密碼'},'@desc': '這是SrvTypeID規定' }}
}
問題解答
回答1:首先我們來分析一波,數據結構不管是什么樣的,人去解析和機器去解析肯定是通過類型type。
是里面有type類型,如a、b、c什么的,如果是這樣我們肯定可以對應不同的類型設置不同的解析方案。
沒有一個明確的type來標識,用的是名字,name和age肯定是兩種不同的東西,那我們就可以通過key來判斷了。
對于json里面有不是命名規則的東西,我們可以用過[]來訪問
