Perl 如何检查 json 文件是否为空、无效和正确
Perl how can I check if json file is empty, invalid and correct
我想检查 3 个关于 JSON 个文件的案例
- JSON文件正确
- JSON 文件完全为空
- JSON 文件无效
为了说明这些,这里有3个样本
- JSON 文件正确
{
"menu":{
"id":"file",
"popup":{
"menuitem":[
]
}
}
}
- JSON 文件为空
[ ]
- JSON 文件无效
[ i ]
我试图管理场景 1 和场景 3。我想,但我找不到处理场景 2 的方法。所以我需要你的提示。
#!/usr/bin/perl
use strict;
use warnings;
use JSON qw( decode_json );
use JSON qw( from_json );
# JSON file
my $json_f = '/home/test.json';
# JSON text
my $json_text = do {
open (TOP, "<", $json_f);
local $/;
<TOP>
};
my $data = from_json($json_text);
my $json_out = eval { decode_json($json_text) };
if ($@) {
print "JSON file is invalid :$@\n";
} else {
print "JSON file is correct", "\n";
}
我想我可能会这样做:
- 文件是否存在?
-e $file
- 如果文件存在,是否有内容?
-s $file
(0 表示零字节)。也可以看看你看的内容:length($data) == 0
.
- 如果有内容,是否有效JSON?使用您已有的东西。
但是,您似乎还有另一种情况,您有有效的 JSON 但数组或对象没有值。这是完全有效的,所以你又迈出了一步。您有一个值、一个数组或一个对象。检查每种类型;如果它是数组或对象,请检查它是否包含元素或键。
我想检查 3 个关于 JSON 个文件的案例
- JSON文件正确
- JSON 文件完全为空
- JSON 文件无效
为了说明这些,这里有3个样本
- JSON 文件正确
{
"menu":{
"id":"file",
"popup":{
"menuitem":[
]
}
}
}
- JSON 文件为空
[ ]
- JSON 文件无效
[ i ]
我试图管理场景 1 和场景 3。我想,但我找不到处理场景 2 的方法。所以我需要你的提示。
#!/usr/bin/perl
use strict;
use warnings;
use JSON qw( decode_json );
use JSON qw( from_json );
# JSON file
my $json_f = '/home/test.json';
# JSON text
my $json_text = do {
open (TOP, "<", $json_f);
local $/;
<TOP>
};
my $data = from_json($json_text);
my $json_out = eval { decode_json($json_text) };
if ($@) {
print "JSON file is invalid :$@\n";
} else {
print "JSON file is correct", "\n";
}
我想我可能会这样做:
- 文件是否存在?
-e $file
- 如果文件存在,是否有内容?
-s $file
(0 表示零字节)。也可以看看你看的内容:length($data) == 0
. - 如果有内容,是否有效JSON?使用您已有的东西。
但是,您似乎还有另一种情况,您有有效的 JSON 但数组或对象没有值。这是完全有效的,所以你又迈出了一步。您有一个值、一个数组或一个对象。检查每种类型;如果它是数组或对象,请检查它是否包含元素或键。