проблема не в этом - везде кроме cb функции save переменная json видна.
тут скорее проблема в том, что http.get(json['url'].."?"..json['saveas'], nil, save) форкается и выполняется в отдельном потоке, чтобы кристалл не "висел" пока файл не загрузится - tcp запросы могут быть долгими (поправьте...