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