如果值有多行
,如何解码json文件a.json文件:
{
"sv1" : {
"output" : "Hostname: abcd
asdkfasfjsl",
"exp_result" : "xyz"
}
}
当我尝试阅读上面的json文件时,我遇到一个错误“在解析JSON字符串时遇到无效字符,字符偏移量为50(在”\ n ...“之前)”
读取上述json文件的代码:
#!/volume/perl/bin/perl -w
use strict;
use warnings;
use JSON;
local $/;
open(AA,"<a.json") or die "can't open json file : $!\n";
my $json = <AA>;
my $data = decode_json($json);
print "reading output $data->{'sv1'}->{'output'}\n";
print "reading output $data->{'sv1'}->{'exp_result'}\n";
close AA;
答案 0 :(得分:1)
除了JSON是否有效(请参阅问题评论)之外,您只阅读文件的第一行。
my $json = <AA>;
这是一个标量变量,只接收一行。
使用数组获取所有行:
my @json = <AA>;
my $json = join "\n", @json;
甚至更好:使用File::Slurp::read_file
通过一个简单的命令获取文件的全部内容。
use File::Slurp qw/read_file/;
my $json = read_file( "a.json" );