如何在Perl中使用encode_json和string?

时间:2016-08-22 12:13:19

标签: json string perl encode

这是我的代码,我尝试打开文件以获取数据并将其更改为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格式)。请帮忙。

1 个答案:

答案 0 :(得分:3)

我假设您正在使用JSONJSON::XS

两者都允许非参考数据,但不允许通过程序use strict; # obligatory use warnings; # obligatory use JSON::XS; my $encoder = JSON::XS->new(); $encoder->allow_nonref(); print $encoder->encode('Hello, world.'); # => "Hello, world." 例程。

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

//Click on Select Box
Thread.sleep(500);
driver.findElement(By.xpath(".//*[@id='DivZone']/div/button")).click();
Thread.sleep(500);
List<WebElement> options =    
driver.findElements(By.xpath("//input[contains(@name, 
'multiselect_ddlZone')]"));
//List<WebElement> options = driver.findElements(By.cssSelector(".ui-
corner-all.ui-state-hover>span"));
List<String> all_elements_text=new ArrayList<>();
if(region!=null)
{
for(int i=1; i<options.size(); i++)
{
all_elements_text.add(options.get(i).getText());
System.out.println(options.get(i).getText());
boolean isThere = false;
for (int j = 0; j < region.size(); j++) 
{
if 
(options.get(i).getText().equalsIgnoreCase(region.get(j))) {
// Code to display warning
isThere = true;
}
}
if(isThere)
System.out.println(options.get(i).getText()+" is matched 
with Database data");
else
System.out.println(options.get(i).getText()+" is not matched 
with Database data");
}
}