这是我的代码,我尝试打开文件以获取数据并将其更改为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格式)。请帮忙。
答案 0 :(得分:3)
两者都允许非参考数据,但不允许通过程序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");
}
}