解析Perl代码中的JSON问题:或者在解析数组时预期在字符偏移处

时间:2017-04-07 17:08:16

标签: json perl

我编写了直到最近才工作的Perl代码,当时我试图再次运行它。问题似乎源于JSON :: XS“decode_json”方法。

代码段:

use warnings;
use strict;
use MooseX::Singleton;
use Array::Utils qw(:all);
use Data::Dumper;
use JSON::XS qw(encode_json decode_json);
use Storable;
use Tie::IxHash;

    open (my $observations_fh, '<', 'observations.json') or die "Could not open observations.json\n";
    my $observations_json = <$obserations_fh>;
    my @decoded_observations = @{decode_json($observations_json)};

通常,在此代码之后,我能够遍历for循环中的每个JSON组件并获取特定信息,但现在我收到错误:

  解析数组时预期的

或者],字符偏移量为5144816   (在“(字符串结尾)”之前)

我看到了类似的问题here,但它没有解决我的问题。

我也有类似的json解码,它没有使用@ {decode_json($ variable)},但是当我尝试使用这个observation.json文件时,输出了相同的错误。

我也尝试过使用JSON模块,但发生了同样的错误。

非常感谢任何见解!

-cookersjs

1 个答案:

答案 0 :(得分:2)

这可能表明你在$observations_json中有不完整的JSON。您假设整个文件只包含一行可能不正确。使用

my $observations;
{
    open (my $observations_fh, '<', 'observations.json')
        or die("Can't open observations.json: $!\n");

    local $/;
    my $observations_json = <$obserations_fh>;
    $observations = decode_json($observations_json);
}

如果这没有帮助,observations.json不包含有效的JSON。