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里面有不是命名规则的东西,我们可以用过[]来访问