я запутался и вас запутал, извините. это совсем не то что мне надо :)
|
Цитата:
Как вариант obj = { ob : "param 1", more : { ob : "param 2", more: { ob : "param 3", more : { ob: "param 4", more: 0 } } } }; var aVal = []; parseOb(obj); alert(aVal); function parseOb (Obj) { aVal[aVal.length]=Obj['ob'] if (typeof(Obj['more'])=='object') { parseOb(Obj['more']) } }; |
Чтоб избежать проблем рекурсией объекта - просто надо вести доп массив объектов и при рекурсивном вызове проверять не было ли такого объекта прежде, и если оный есть - вставлять заглушку про рекурсию или ссылку на оный.(в зависимости от выводимой структуры). Ничего запредельно сложного. Меня если четно напрягает почему JSON.stringify не делает так, а плюёт ошибкой.
|
Aetae, и как по-твоему должна выглядеть ссылка в json?
|
В json наверное просто игнорировать, просто ворнинг пулять.)
Но да ты прав, я погорячился.) |
Вот делюсь примером, как я просматриваю объект!
var a={}; a.key=3; a.super=6; a.a=1; a.ooo={}; a.ooo.w=1; a.ooo.d='ss'; a.ooo.kk={}; a.ooo.kk.eee=12; a.sss='ddfdsf'; glu=0; //glubina delta=''; deltastep=' '; function showobj(obj,oname){ if(typeof(obj)=='object'){ showobj_t+='\n'+delta+oname+' {'; glu++; delta=''; for(g=0;g<glu;g++){ delta+=deltastep; } for(i in obj){ if( obj[i] == '[object Object]' ){ showobj(obj[i],oname+'.'+i); } showobj_t+='\n'+delta+oname+'.'+i; showobj_t+=' = '+obj[i]; } glu--; delta=''; for(g=0;g<glu;g++){ delta+=deltastep; } showobj_t+='\n'+delta+'}'; }else{ alert('noT!'); } } var showobj_t=''; //итоговый текст showobj(a,'a'); alert(showobj_t); |
anton-line,
Пожалуйста, отформатируйте свой код! Для этого его можно заключить в специальные теги: js/css/html и т.п., например: [js] ... ваш код... [/js] О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting. |
примечания:
1) deltastep=' '; //тут пробел.. можно поставить 3 пробела для наглядности 2) oname (второй параметр к функции) - тоже только для наглядности 3) проверка "является ли объектом" сделана так: obj[i] == '[object Object]' потому что "typeof(obj)=='object'" что-то не сработала.. но можете подправить =) =) пользуйтесь =) |
Часовой пояс GMT +3, время: 07:16. |