Я не совсем уверен, как вы хотите, чтобы полученная структура данных выглядела, но вот это (в котором используется некоторый jQuery):
$(function() {
var result = {};
function createNewLevel(parent,items) {
var length = items.length;
for(var i = 0; i < length; i++) {
if(items[i].tagName == 'UL') {
parent['ul' + i] = {};
createNewLevel(parent['ul' + i],$(items[i]).children().get());
} else {
parent['li' + i] = $(items[i]).text();
}
}
}
createNewLevel(result, $('ul:first').get());
console.log(result);
});
... создаст эту структуру
{
ul0: {
li0: "Item a1",
li1: "Item a2",
li2: "Item a3",
li4: "Item a4",
ul3: {
li0: "Item b1",
li1: "Item b2",
li2: "Item b3",
li4: "Item b4",
ul3: {
li0: "Item c1",
li1: "Item c2",
li2: "Item c3"
}
}
}
}
Это может быть довольно легко настроить, чтобы изменить детали получившейся структуры при необходимости.
Обратите внимание, что это объект javascript. Если вам действительно нужен JSON-объект, вам просто нужно конвертировать его, используя var jsonResult = JSON.stringify( result );