To be clear,I left the line number out because it means nothing, but it is definitely on the line:
my $json = encode_json($arrayref, $typehint_raws);
Using print Dumper I verify that:
*$typehint_raws becomes one empty array for each record found
*$typehint_raw is a hash which has each column and and whether it's an int or string
Once again, everything works, but each call to the above line returns that error.
Here's the code I use to retrieve each record....
$data = readRaw(table name);
sub readRaw {
my ($rawfilename) = @_;
my $dbCommand = 'select '.join ',', @rawFields;
$dbCommand .= qq^ from $rawfilename;^;
$dbHandle=$db->prepare($dbCommand);
$dbHandle->execute();
my $data = $dbHandle->fetchall_arrayref();
$dbHandle->finish;
foreach my $rows (@$data) {
my %GenericData;
@GenericData{ @rawFields } = @$rows; # NOTE added
push @rawRecords, \%GenericData;
}
return \@rawRecords;
}
So I have an array of arrays, but each array holds the reference to a hash for each record read
And $data is passed to this function
sub makeJSONToExport {
my ($arrayref) = @_;
my $typehint_raw = { age => JSON_TYPE_INT,
lastname => JSON_TYPE_STRING,
firstname => JSON_TYPE_STRING};
my $typehint_raws = [ ($typehint_raw) x @$arrayref];
my $json = encode_json($arrayref, $typehint_raws);
return $json;
}
|