Beefy Boxes and Bandwidth Generously Provided by pair Networks
Just another Perl shrine
 
PerlMonks  

Re^4: Formatting JSON the right way

by Anonymous Monk
on Aug 20, 2014 at 13:10 UTC ( #1098114=note: print w/replies, xml ) Need Help??


in reply to Re^3: Formatting JSON the right way
in thread Formatting JSON the right way

Using a while loop to fetch the data is not recommended? If so, is that how I would push each value into the array?
while (my $row = $data_handle->fetchrow_hashref()) { push( @{$returned_data{'name'}}, $row->{name} ); push( @{$returned_data{'city'}}, $row->{city} ); push( @{$returned_data{'state'}}, $row->{state} ); }

Thanks!

Replies are listed 'Best First'.
Re^5: Formatting JSON the right way
by scorpio17 (Canon) on Aug 20, 2014 at 15:30 UTC

    I think you want something more like this:

    my @returned_data; while (my $row = $data_handle->fetchrow_hashref()) { push (@returned_data, { 'name' => $row->{NAME}, 'city' => $row->{CITY}, 'state' => $row->{STATE}, }); } $data_handle->finish; print $q->header(-type => "application/json", -charset => "utf-8"); my $json = encode_json \@returned_data; print $json;

    Things to note: @returned_data is an array of hashrefs. Each time through the while loop, you grab a row from the database, and push a new hashref into the array (each hashref is like a single record of data). This isn't necessarily the best way to do it - it makes more sense to do it this way when you need to use different key names, or modify the data in some way. If all you want is to dump the database values to the web page "as is", consider the suggestions given here by other monks.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1098114]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others chanting in the Monastery: (6)
As of 2019-12-16 09:40 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found

    Notices?