Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用JSON将Perl数组转换为JavaScript数组?_Javascript_Json_Perl - Fatal编程技术网

如何使用JSON将Perl数组转换为JavaScript数组?

如何使用JSON将Perl数组转换为JavaScript数组?,javascript,json,perl,Javascript,Json,Perl,我正在尝试制作一个网页,其中显示有关netapp文件管理器使用情况的图表 我从以下方式存储的文件中读取数据 Name usedSpace available_space kbytes quota_volume capacity Juno 889347800 1795006760 2684354560 1698693120 33% 这是我的Perl代码 use CGI; use Time::Local; use List::Mor

我正在尝试制作一个网页,其中显示有关netapp文件管理器使用情况的图表

我从以下方式存储的文件中读取数据

Name   usedSpace   available_space    kbytes       quota_volume   capacity
Juno   889347800   1795006760         2684354560   1698693120     33%
这是我的Perl代码

use CGI;
use Time::Local;
use List::MoreUtils qw(uniq);
use GD;
use GD::Graph::bars;
use GD::Graph::lines; 
use GD::Graph::area;

open (MYFILE, 'my_data.csv');

@filesystem_name = ();
@my_date = ();
@my_used = ();
@my_avail = ();
@my_kbytes = ();
@my_quota_volume = ();
@my_capacity = ();

#read all the data and store fields into arrays
while (<MYFILE>) {
    if(/$user_selected_filer/) {
    ($dummy,$current_line_date,$dummy,$dummy,$dummy,$dummy,$dummy) =  split (/,/, $_);     
    if(($current_line_timestamp ge $start && $current_line_timestamp le $end)){

            ($name,$date_after,$used,$avail, $kbytes, $quota_volume, $capacity) = split  (/,/, $_);
            ($month_after,$day_of_month_after,$year_after) = split ('/', $date_after);
            push (@filesystem_name,$name);
            push (@my_used,$used/1000000);
            push (@my_avail,$avail/1000000);
            push (@my_kbytes,$kbytes/1000000);
            push (@my_quota_volume,$quota_volume/1000000);
            push (@my_capacity,$capacity);
            push (@my_date_after, $month_after . "/" . $day_of_month_after . "/" . $year_after);
            $count++;
    }
    }
使用CGI;
使用时间::本地;
使用列表::MoreUtils qw(uniq);
使用GD;
使用GD::Graph::bar;
使用GD::Graph::line;
使用GD::Graph::area;
打开(MYFILE,'my_data.csv');
@文件系统名称=();
@我的约会=();
@我用的是=();
@我的效用=();
@我的千字节=();
@我的配额量=();
@我的能力=();
#读取所有数据并将字段存储到数组中
而(){
如果(/$user\u selected\u filer/){
($dummy,$current_line_date,$dummy,$dummy,$dummy,$dummy)=拆分(/,/,$);
if($current_line_timestamp ge$start&&$current_line_timestamp le$end)){
($name、$date\u after、$used、$avail、$kbytes、$quota\u volume、$capacity)=拆分(/,/,$);
($month\u after,$day\u of月\u after,$year\u after)=拆分(“/”,$date\u after);
push(@filesystem\u name,$name);
推送(@my_used,$used/1000000);
推送(@my_avail,$avail/1000000);
推送(@my_kbytes,$kbytes/1000000);
推送(@my_quota_volume,$quota_volume/1000000);
推送(@my_capacity,$capacity);
推送(@my_date_after,$month_after./“$day_of_month_after./”$year_after);
$count++;
}
}
}

只要我使用GD图形,这些数组就适合使用Perl生成图形。但我想在需要JavaScript数组的网页上绘制这些图形


我对JSON这整件事有点不知所措。

因为我不知道你真正想要什么,这里有一条在线:

perl -MJSON::XS -MText::CSV::Slurp -E 'say JSON::XS->new->utf8->encode(Text::CSV::Slurp->load(filehandle => *STDIN))' < file.csv
创建以下内容:

[{"usedSpace":"889347800","quota_volume":"1698693120","kbytes":"2684354560","available_space":"1795006760","capacity":"33%","Name":"Juno"},{"usedSpace":"89347800","quota_volume":"698693120","kbytes":"684354560","available_space":"795006760","capacity":"3%","Name":"Juno2"},{"usedSpace":"9347800","quota_volume":"98693120","kbytes":"84354560","available_space":"95006760","capacity":"1%","Name":"Juno3"}]
或者更漂亮的是:

perl -MJSON::XS -MText::CSV::Slurp -E 'say JSON::XS->new->utf8->pretty->encode(Text::CSV::Slurp->load(filehandle => *STDIN))' < file.csv

我不确定你的问题是什么,但这些想法可能会有所帮助

JSON数据是JavaScript对象和数组的独立于语言的限制

JSON是一种使用简单字符串表示数据结构的方法

由于散列和数组的概念很常见,因此可以使用JSON在不同语言和不同平台之间移动信息

从您的问题中不清楚您想要移动哪些数据,以及移动到哪里。但是,您可以使用模块的
encode_JSON
方法从Perl创建一个JSON字符串,该方法将为您提供一个可以通过任何方式发送到任何地方的字符串


相应地,您可以使用
JSON.parse
构建一个反映原始Perl数据的JavaScript对象。

您是否计划使用图表库在JavaScript中生成图形?如果是,哪一个?我确信它们都需要不同格式的输入数据;在制作JSON之前,你应该知道使用什么格式。我想用JavaScript制作谷歌图表。这是它的链接。请看,投票关闭,因为此脚本对您的输入数据不起任何作用。脚本在
处分开,您的数据是分开的(或空格?),所以不要说它有用。。。为什么不显示1。)你真正的输入,2。)想要的输出3。)你真正的尝试?!数据用逗号分隔。@user3353628 jm666的要点是,您在问题中包含的数据没有用逗号分隔。无论如何,friedo在前面的问题中给出了将数组哈希转换为JSON的方法。JavaScript代码需要对Perl脚本进行AJAX调用以获取JSON数据。然后,您必须将其转换为一个数组,这正是谷歌图表所期望的。这对于多个堆栈溢出问题来说已经足够了,所以我建议你一步一个脚印,如果你陷入困境,问一个更窄的问题。
perl -MJSON::XS -MText::CSV::Slurp -E 'say JSON::XS->new->utf8->pretty->encode(Text::CSV::Slurp->load(filehandle => *STDIN))' < file.csv
[
   {
      "usedSpace" : "889347800",
      "quota_volume" : "1698693120",
      "kbytes" : "2684354560",
      "available_space" : "1795006760",
      "capacity" : "33%",
      "Name" : "Juno"
   },
   {
      "usedSpace" : "89347800",
      "quota_volume" : "698693120",
      "kbytes" : "684354560",
      "available_space" : "795006760",
      "capacity" : "3%",
      "Name" : "Juno2"
   },
   {
      "usedSpace" : "9347800",
      "quota_volume" : "98693120",
      "kbytes" : "84354560",
      "available_space" : "95006760",
      "capacity" : "1%",
      "Name" : "Juno3"
   }
]