【问题标题】:JSON parsing error in perlperl中的JSON解析错误
【发布时间】:2020-07-02 00:22:50
【问题描述】:

我得到了错误

EXECUTION FAILED ...格式错误的 JSON 字符串,既不是数组、对象、数字、字符串也不是原子,在字符偏移量 0 处(在“(字符串结尾)”之前)”

当我将我的 JSON 字符串从 DB 解析到这个 sn-p 时。

my $json_geno1 = decode_json($geno_set_one);
warn Dumper($json_geno1); 

我错过了什么吗? json 字符串来自数据库。

 $VAR1 = [
   '{"":"No Call","rs1032807":"AG","rs718757":"AG","rs6557634":"CC","rs995553":"CG","rs6166":"AG","rs4925":"AA","rs502843":"GT","rs725029":"No Call","rs3904872":"GG","rs1402695":"TT","rs719601":"AA","rs2374061":"AG","rs952503":"TT","rs1801262":"AG","rs5215":"CT","rs978422":"CC","rs12828016":"GG","rs958388":"AG","rs999072":"CT","rs967344":"AG","rs2207782":"CC","rs349235":"AA","rs1074553":"CT","rs1395936":"AG","GS35220":"CT","rs7627615":"AG","rs727336":"AG","rs2077774":"AC","rs8065080":"CC","rs1131498":"TT","rs2247870":"No Call","rs803172":"TT","rs1541290":"AG","rs1414904":"AA","rs1928045":"No Call","rs2077743":"GT","rs2361128":"No Call","rs3795677":"AG","rs1030687":"CT","rs156318":"GG","rs952768":"CC","rs1363333":"TT","rs7298565":"AG","rs310929":"CC","rs2369898":"CT","rs1327118":"CC","rs4619":"AG","rs965323":"TT","rs2887851":"AG","rs1862456":"GT","rs6759892":"GT","rs753381":"AG","rs1805034":"CC","rs1812642":"AA","rs4075254":"CT","rs1805087":"AA","rs532841":"CT","rs951629":"GG","rs2286963":"GG","rs763553":"CT","rs1074042":"GG","rs2241714":"GG","rs894240":"TT","rs522073":"CT","GS35205":"TC","rs1368136":"TT","rs1426003":"GG","rs2016588":"No Call","rs621277":"No Call","rs727081":"GG","rs1392265":"AC","rs1079820":"No Call","rs4843075":"AG","rs156697":"CC","rs11096957":"AC","rs1952161":"GG","rs1961416":"AG","rs1585676":"GG","rs890910":"TT","rs171953":"AG","rs1843026":"CC","rs1515002":"CC","rs756497":"No Call","rs1293153":"No Call","rs754257":"GT","rs649058":"AG","rs726957":"AG","rs728189":"No Call","GS34251":"TC","rs3742207":"No Call","rs210310":"CT","rs2216629":"AG","rs1541836":"CT","rs722952":"CT","rs1105176":"GG"}'
    ];

谢谢

【问题讨论】:

  • 请出示您的 JSON 数据

标签: json perl


【解决方案1】:

您可能应该使用:

my $json_geno1 = decode_json($VAR1[0]);

因为$VAR1 现在是一个数组。

这个 JSON 是有效的(我已经在 PHP 中测试过它)并且我从这个字符串中获取对象没有问题。

【讨论】:

    【解决方案2】:

    我得到了完全相同的错误。通过删除以下代码解决了这个问题

    my $json;
    {
      local $/;
      open ($fh, "+<temp.json") or die $!;
      my $json = <$fh>;
      close $fh;
    }
    

    并通过从第 5 行中删除 my 来解决。

    my $json;
    {
      local $/;
      open ($fh, "+<temp.json") or die $!;
      $json = <$fh>;
      close $fh;
    }
    

    【讨论】:

      【解决方案3】:

      当我尝试像这样调用读取函数时,我也得到了这个*消息:

      perl json_read_test.pl /server/lib/Schema/user_data.schema.json

      当我将它与 ./ 或没有 / 或完整路径名一起使用时,问题就解决了。

      ** “格式错误的 JSON 字符串,既不是标签、数组、对象、数字、字符串或原子,在 /usr/share/perl5/JSON.pm 第 190 行的字符偏移量 0(在“(字符串结尾)”之前)。”

      【讨论】:

        【解决方案4】:
        my $json_geno1 = decode_json($geno_set_one->[0]);
        warn Dumper($json_geno1);
        

        【讨论】:

        • 嗨,亚历山大!欢迎来到 SO!介意在您的答案中添加更多“肉”吗?我们通常不做仅代码的答案,因为它们对未来的访问者没有太大帮助:) 需要一些上下文 ^^
        猜你喜欢
        • 1970-01-01
        • 2018-10-27
        • 2012-04-12
        • 1970-01-01
        • 2010-11-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多