簡體   English   中英

perl 中的 JSON 解析錯誤

[英]JSON parsing error in perl

我收到錯誤

執行失敗 ...格式錯誤的 JSON 字符串,不是數組、對象、數字、字符串或原子,字符偏移量為 0(在“(字符串結尾)”之前)”

當我將我的 JSON 字符串從 DB 解析到這個片段時。

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"}'
    ];

謝謝

您可能應該使用:

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

因為$VAR1現在是一個數組。

這個 JSON 是有效的(我已經在 PHP 中測試過),我從這個字符串中獲取對象沒有問題。

我得到了完全相同的錯誤。 通過刪除以下代碼解決了

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;
}

當我嘗試像這樣調用 read 函數時,我也收到了這個 * msg:

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

當我將它與 ./ 或不使用 / 或完整路徑名一起使用時,解決了問題。

**“格式錯誤的 JSON 字符串,既不是標簽、數組、對象、數字、字符串或原子,在字符偏移 0(在“(字符串結尾)”之前)在 /usr/share/perl5/JSON.pm 第 190 行。”

my $json_geno1 = decode_json($geno_set_one->[0]);
warn Dumper($json_geno1);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM