Ma se invece di usare json_encode su un array per trasformarlo in file json, passo direttamente una stringa rappresentate il file json tipo:

echo { "locali":{ "bar1": { "name": 'Il bar uno',"indirizzo" : "via rosmini 5"}"bar2": { "name" : 'Il bar due',"indirizzo" : "via manzoni 7"}}}

cambia qualcosa? dal punto di vista semantica intendo, poi è ovvio che il modo che hai usato tu è il più corretto.

Riguardo alla funzione potresti dirmi in breve a cosa si riferiscono le variabili:

function(data) {
jQuery.each(data,function(key,val){
alert(data[key].nome);
});


data?
key?
val?
nome? che forse sarebbe "name", ovvero il campo del file json