Вы можете сделать это следующим образом ( jsfiddle для более сложного примера ), предполагая, что settings
переменная установлена первой:
var assignValue = function(n, v){
var field = jQuery('form input[name="'+n+'"]');
if (field.attr('type')=='text'){
field.val(v);
} else if (field.attr('type')=='checkbox') {
field.prop('checked',v);
}
}
var assignSettings = function(list, prefix){
if (typeof prefix != 'undefined'){
prefix += '.';
}else{
prefix = '';
}
for (item in list){
if ((typeof list[item]=='string')||(typeof list[item]=='boolean')){
assignValue(prefix+item,list[item]);
}else if(typeof list[item]=='object'){
var n1 = item;
assignSettings(list[n1],prefix+n1);
}
}
}
assignSettings(settings);
Иэто решение не так ограничено, как другие решения в версиях, которые я видел до сих пор, - оно поддерживает приведенный вами случай и может быть легко расширено для поддержки различных типов полей и большего количества уровней.