jqgrid через Perl - PullRequest
       1

jqgrid через Perl

0 голосов
/ 17 мая 2011

Я пытаюсь отправить информацию JSON в jqgrid через Perl, но я пытаюсь найти подходящую структуру JSON:

В соответствии с документами JQgrid JSON должен иметь следующий формат:

{
"total": "xxx",
"page": "yyy",
"records": "zzz",
"rows" : [
{"id" :"1", "cell" :["cell11", "cell12", "cell13"]},
{"id" :"2", "cell":["cell21", "cell22", "cell23"]},
...
]
}
#!/usr/bin/perl 
use CGI (-debug);
use DBI;
use JSON;
use POSIX qw(ceil);
use strict;
use warnings;
...
my $i=0;
my $response = {};
$response->{total} = $total_pages;
$response->{page} = $page;
$response->{records} = $count;
while ( my $row = $sth->fetchrow_hashref ){
        $response->{rows}->[$i]->{id} = $i;
        $response->{rows}->[$i]->{cell} = ($row);
        $i++;
}
print $cgi->header(-type => "application/json", -charset => "utf-8");
print JSON::to_json($response);

Я почти уверен, что мне нужен хэш массивов, но я не могу понять, как это сделать.

1 Ответ

1 голос
/ 17 мая 2011

Это одна проблема:

$response->{rows}->[id]

В этой фразе вы берете хеш-код ($response), обращаетесь к его хеш-ключу "rows", а затем получаете доступ к анонимному массиву, указанному $response->{rows}. Пока все хорошо, но анонимный массив не может иметь элемент с именем 'id', если только 'id' не определен где-то как константа, которую я не вижу нигде в опубликованном вами коде. Скорее всего, вы имеете в виду «$response->{rows}{id}». Другими словами, хэш хэшей. Обратите внимание, что оператор -> является избыточным при расположении между индексами, поэтому я удалил его.

Однако вы упомянули в своем посте, что вам нужен хэш массивов. Но это должно было бы выглядеть как $response->{rows}[0].

Одна вещь, которую я иногда нахожу полезной, это просто использовать Data :: Dumper, чтобы вывести возвращаемое значение fetchrow_hashref, чтобы посмотреть, как это выглядит. Возможно, у вас уже есть представление об этом, но иногда, рассматривая его как структуру данных, вы сможете лучше визуализировать, как следует перестроить структуру данных в соответствии с требованиями проекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...