Попробовал написать, но у меня чет фигня пока получается, лишний элемент <li> каждый раз вставляется.
<!doctype html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<script src="https://code.jquery.com/jquery-2.1.1.min.js"></script>
</head>
<body>
<div class="tree"></div>
<script>
$(document).ready(function() {
var jsonTree = {
"firstName": "Иван",
"lastName": "Иванов",
"address": {
"streetAddress": "Московское ш., 101, кв.101",
"city": "Ленинград",
"postalCode": 101101
},
"address2": {
"streetAddress2": "Московское ш., 101, кв.101",
"city2": "Ленинград",
"adress3": 101101
}
};
function createList(obj) {
debugger;
if(typeof obj !== 'object') return;
var ul = $('<ul />');
for(var key in obj) {
var item = $('<li> <input type="checkbox" name="' + key + '" />' + (obj[key] == '[object Object]' ? key : obj[key]) +'<li />');
var ulChilds = createList(obj[key]);
ulChilds && item.append(ulChilds);
ul.append(item);
}
return ul;
}
$('.tree').append( createList(jsonTree) );
});
</script>
</body>
</html>