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

Could you provide any code to illustrate what your are suggesting? Thanks!

Replies are listed 'Best First'.
Re^3: Formatting JSON the right way
by hippo (Archbishop) on Aug 20, 2014 at 12:42 UTC

    Sure, try this:

    my $returned_data = $data_handle->fetchall_arrayref ({}); # Any other ops here, and then: print $q->header(-type => "application/json", -charset => "utf-8"); my $json = encode_json ($returned_data); print $json;

    Untested (especially with ODBC which I almost never use) but hopefully you get the gist. See DBI for the details of fetchall_arrayref.

      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!

        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.