Perl 如何检查 json 文件是否为空、无效和正确

Perl how can I check if json file is empty, invalid and correct

我想检查 3 个关于 JSON 个文件的案例

  1. JSON文件正确
  2. JSON 文件完全为空
  3. JSON 文件无效

为了说明这些,这里有3个样本

  1. JSON 文件正确
{
   "menu":{
      "id":"file",
      "popup":{
         "menuitem":[
            
         ]
      }
   }
}
  1. JSON 文件为空
[ ]
  1. 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 但数组或对象没有值。这是完全有效的,所以你又迈出了一步。您有一个值、一个数组或一个对象。检查每种类型;如果它是数组或对象,请检查它是否包含元素或键。