【问题标题】:How do I use encode_json with string in Perl?如何在 Perl 中将 encode_json 与字符串一起使用?
【发布时间】:2016-08-22 12:13:19
【问题描述】:

这是我的代码,我尝试打开文件以获取数据并将其更改为 UTF-8,然后读取每一行并将其存储在变量 my $abstract_text 中并以 JSON 结构发回。

my $fh;
if (!open($fh, '<:encoding(UTF-8)',$path))
    {
    returnApplicationError("Cannot read abstract file: $path ($!)\nERRORCODE|111|\n");
    }
printJsonHeader;
my @lines = <$fh>;
my $abstract_text = '';
foreach my $line (@lines)
    {
    $abstract_text .= $line;
    }

my $json = encode_json($abstract_text);
close $fh;
print $json;

通过使用该代码,我得到了这个错误;

hash- 或 arrayref 预期(不是简单的标量,使用 allow_nonref 来允许)

错误信息也指出问题出在这一行; 我的 $json = encode_json($abstract_text);

我想将数据作为字符串(UTF-8 格式)发回。请帮忙。

【问题讨论】:

  • @Zaid 你的近距离投票是没有根据的:这一次不是关于使用本身,而是编码不是参考的东西。
  • @Zaid 非常感谢。

标签: json string perl encode


【解决方案1】:

我假设您使用的是JSONJSON::XS

两者都允许非参考数据,但不能通过程序 encode_json 例程。

您需要使用面向对象的方法:

use strict;   # obligatory
use warnings; # obligatory

use JSON::XS;

my $encoder = JSON::XS->new();

$encoder->allow_nonref();
print $encoder->encode('Hello, world.');
# => "Hello, world."

【讨论】:

    猜你喜欢
    • 2016-04-24
    • 1970-01-01
    • 2021-02-16
    • 1970-01-01
    • 2021-12-31
    • 1970-01-01
    • 1970-01-01
    • 2019-02-23
    • 1970-01-01
    相关资源
    最近更新 更多