|
|
|
| Определить размер(длину) объекта JSON
1. Если бы был массив
var numbers = [1,2,3,4,5];
alert("numbers.length = \n" + numbers.length)
// вернет 5
2. Пусть задан простой объект
var obb = {1:10, 2:20, 3:30, 4:40, 5:50};
alert("obb.length = \n" + obb.length)
// вернет undefinet
3. На самом деле есть вложеные объекты (примерно 1000 элементов), типа
var obb ={11: {1:10, 21:{ 2:20, 31:{ 3:30, 4:40, 5:50} } }, 12: {1:10, 22:{ 2:20, 32:{ 3:30, 4:40, 5:50} } } };
Надо выбирать(читать, получать) отдельные объекты | |
|
|
|
|
|
|
|
для: Парсер
(07.01.2015 в 21:07)
| | JSON, это не объект, это лишь способ описания данных в неком формате, и является обычной строкой.
А посчитать элементов в объекте можно только пройдясь по нему в цикле, ибо есть немного методов, но их нет к примеру в IE8, то есть не все во всех браузерах будет работать. | |
|
|
|
|
|
|
|
для: confirm
(07.01.2015 в 22:18)
| | Не пойму где ошибка. Вроде очень просто, но не понимаю чего-то простого
Надо выбирать свойства-значения (строки или объекта, как угодно) 11, 21, 31, 12, 22, 32
var obb ={11: {1:10, 21:{ 2:20, 31:{ 3:30, 4:40, 5:50} } }, 12: {1:10, 22:{ 2:20, 32:{ 3:30, 4:40, 5:50} } } };
parse_obb (obb)
function parse_obb (ob) {
for (var key in ob) {
alert(key+ " "+ob[key])
if (ob[key] instanceof Object){
alert(key + " instanceof "+ob[key])
parse_obb (ob);
}
}
}
|
| |
|
|
|
|
|
|
|
для: Парсер
(07.01.2015 в 23:35)
| | У вас вложение то какое, а вы один уровень проверили, а остальные автоматом получатся что-ли?
var o = {
11:{
1:100,
21:{
2:200,
31:{
3:300, 4:400, 5:500
}
}
},
12: {
1:1000,
22:{
2:2000,
32:{
3:3000, 4:4000, 5:5000
}
}
}
};
for(a in o) {
if(typeof o[a] == 'object') {
n = o[a];
for(b in n) {
if(typeof n[b] == 'object') {
m = n[b];
for(c in m) {
if(typeof m[c] == 'object') {
for(d in m[c]) alert(m[c][d]);
} else alert(m[c]);
}
} else alert(n[b]);
}
} else alert(o[a]);
}
|
| |
|
|
|
|
|
|
|
для: confirm
(08.01.2015 в 01:48)
| | Спасибо, но у меня их там больше 1000 умрешь прописывать
Надо рекурсивно так, как будто из папки перебираем файлы и вложенные папки
Причем получать только те котроые на одном уровне.
Может вы и правильный путь выбрали, подумаю
Главный вопрос, как отобрать вложенный с ключом допустим 9 или _210, БЕЗ ДРУГИХ ВЛОЖЕННЫХ
Для more1, получить 0: 2, more2:22, more3:33 без остальных данных.
Для more4, получить 0: 3, more5: 55, more6: 66, more7:77 без остальных данных.
Для more9, получить 0: 9, more4: 99без остальных данных.
(что-то я запарился, пример не подобрать)
Этот код работает, исправленное жирным выделил
var obj = { more1: { 0: 2, more2:22, more3:33, more4: { 0: 3, more5: 55, more6: 66, more7:77, more8:88, more9:{ 0: 9, more4: 99 } } } };
parseOb(obj);
function parseOb (ob) {
for(var key in ob)
{
alert("1 key ="+key+" ob = "+ob+" ob[key] = "+ob[key] )
if (ob[key] instanceof Object)
{
parseOb(ob[key])
}
}
}
|
| |
|
|
|
|
|
|
|
для: Парсер
(08.01.2015 в 02:59)
| | Как понять без Других вложенных? Вы обычный массив с глубоким вложением обходили когда либо? Вам удавалось не зная что далее следует "перескочить" не понятно сколько и чего, и достичь нужного?
Не получится без перебора элементов, будь то массив или объект. Пишите рекурсивный обход, но проверять придется. | |
|
|
|
|
|
|
|
для: confirm
(08.01.2015 в 03:40)
| | . | |
|
|
|
|