2013-07-31 6 views
0

Сейчас у меня есть JSON, который создается из отобранного из MySQL и выглядит следующим образом:изменить JSon строку в цикле

$sth->execute() 
    or die "SQL Error: $DBI::errstr\n"; 

while (my $row = $sth->fetchrow_hashref){ 
    push @output, $row; 
    # print $row->{image}; 
    $photo = $row->{image}; 
    my $file = "$photo"; 
    my $document = do { 
     local $/ = undef; 
     open my $fh, "<", $file 
      or die "could not open $file: $!"; 
     <$fh>; 
    }; 

    my $encoded= MIME::Base64::encode_base64($document); 
} 

С JSON вида:

{"myData":[{"favorited":null,"date":"2013-07-31","preferredMeetingLocation":"meet here","description":"Clothes desc","image":"/var/www/pictures/photo-7h1sIsXQ.jpg","id":"31","title":"clothing ","price":"12","category":"Clothing","isbn":null}]} 

И то, что я хочу сделать, это вместо того, где он показывает путь к изображению, который я хочу изменить, к фактическому изображению для каждого объекта в строке json. В конце концов я хочу кодировать каждое изображение на base64, но я знаю, как сделать эту часть. Мне просто нужно помочь сменить /var/www/pictures/photo-7h1sIsXQ.jpg в этом случае на то, с чем я могу работать и кодировать.

+0

Похоже, было бы проще проверить его во время первой итерации по данным. Если изображение eq в строке строки запустит ваше регулярное выражение на значение. Возможно, возвратите все после последнего/если все ваши пути изображения отформатированы как таковые –

+0

В чем проблема/проблема? Разве вы не знаете, как открыть файл и прочитать его? – daxim

+0

@ daxim Я делаю, но я не знаю, как получить к нему доступ в $ jsonData. Как мне сделать цикл для обращения к ref ref для каждого из них? – BluGeni

ответ

0

Как правильно сказано, вы хотите подставить данные изображения, прежде чем кодировать структуру данных как JSON. Вы хотите использовать MIME::Base64 для кодирования. Результат, скорее всего, будет выглядеть так:

use MIME::Base64 qw(encode_base64); 
use File::Slurp; 

my $base64_encoded_image = encode_base64 scalar read_file($filename, binmode => ':raw'); 
+0

Как мне изменить мой json в этом, с каким изображением теперь связана моя новая закодированная строка для каждого объекта, который у меня есть? – BluGeni

+0

@BluGeni ??? Просто обновите это поле в структуре данных: '$ row -> {image} = $ encoded'. Неужели это так сложно? – amon

+0

жаль, что я не знал, что вы можете это сделать, отлично работает, спасибо за дополнительную помощь. – BluGeni

0

Изменить $row->{image} перед кодированием.

+0

отлично это то, что я хотел, я обновил свой код, мой последний вопрос: как изменить json изображения на мой $ document? – BluGeni

Смежные вопросы