If you were paying attention you would see that even your code had commas between the interior arrays.
$var_data_running .= ",\[\"$row_array[0] \($row_array[2]\)\",$row_arr
+ay[2]\]";
That is why
my $orun=join(',',@iarray_run);
print "var data_run=[$orun];\n";
is correct.
use strict; use warnings;
use DBI;
my $storagefile='finddata';
my $DBH = DBI->connect( "dbi:SQLite:dbname=".$storagefile ) || die "Ca
+nnot connect: $storagefile $DBI::errstr";
my $sql = 'SELECT queue_name,jobs_pend,jobs_run
FROM queues
ORDER BY jobs_run DESC';
my $sth = $DBH->prepare( $sql );
$sth->execute();
# input
my %table = ();
my $recno = 0;
my @top = ();
while (my ($name,$pend,$run) = $sth->fetchrow_array){
my $key = ($recno++ < 5) ? $name : 'other' ;
push @top,$key unless (defined ($top[-1]) && $top[-1] eq 'other');
$table{$key}{'pend'} += $pend;
$table{$key}{'run'} += $run;
}
#So first you need to make your interior arrays
my @iarray_run;
for my $key (@top){
push @iarray_run,'["'.$key.'",'.$table{$key}{'run'}.']';
}
# then you join them and assign them
my $orun=join(',',@iarray_run);
print "var data_run=[$orun];\n";
my $orun2=join('',@iarray_run);
print "wrong-var data_run=[$orun2];\n";
print "\n";
use JSON 'decode_json';
my $frjson_data_run = decode_json( "[$orun2]" );
Result
var data_run=[["adice_short",192],["ncsim_short",84],["ncsim_long",78]
+,["adice_long",39],["normal",30],["other",34]];
wrong-var data_run=[["adice_short",192]["ncsim_short",84]["ncsim_long"
+,78]["adice_long",39]["normal",30]["other",34]];
, or ] expected while parsing array, at character offset 21 (before ""
+ncsim_short",84]["n...") at 1187071a.pl line 38.
Even
poj's code at
Re^5: How to add columns with new row name using perl from mysql query? via encode_json prints
var data_run = [["adice_short (192)","192"],["ncsim_short (84)","84"],
+["ncsim_long (78)","78"],["adice_long (39)","39"],["normal (30)","30"
+],["other (34)","34"]]
so i think you still need to pay much more attention to what you are doing.
http://www.json.org/An array is an ordered collection of values. An array begins with [ (left bracket) and ends with ] (right bracket). Values are separated by , (comma).
Just another day wasted i guess
You owe The Oracle some funky characters. And still no proper grovel.
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.