gpt4 book ai didi

JSON:在创建带有 pretty-print 的文件时死于解码

转载 作者:行者123 更新时间:2023-12-05 09:24:51 30 4
gpt4 key购买 nike

当我使用 pretty-print 版本时,为什么会出现此错误?

'"' expected, at character offset 2 (before "(end of string)") at ./perl.pl line 29.

#!/usr/bin/env perl
use warnings;
use 5.014;
use utf8;
binmode STDOUT, ':encoding(utf-8)';
use Data::Dumper;
use JSON;

my $json = JSON->new->utf8;
my $hashref = {
'muster, hanß' => {
'hello' => {
year => 2000,
color => 'green'
}
}
};

my $utf8_encoded_json_text = $json->pretty->encode( $hashref ); # leads to a die
#my $utf8_encoded_json_text = $json->encode( $hashref ); # works

open my $fh, '>', 'testfile.json' or die $!;
print $fh $utf8_encoded_json_text;
close $fh;

open $fh, '<', 'testfile.json' or die $!;
$utf8_encoded_json_text = readline $fh;
close $fh;
$hashref = decode_json( $utf8_encoded_json_text );
say Dumper $hashref;

最佳答案

因为当您读回文件时,您使用的是 readline,并且只读取文件的第一行。当 pretty 关闭时,整个输出都在一行上。当漂亮打开时,JSON 分布在多行中,因此您将无效的截断 JSON 传递给 decode_json

使用local $/= undef;slurp 读取全部内容或者你想要的任何其他东西。

关于JSON:在创建带有 pretty-print 的文件时死于解码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8403634/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com