我试图从JSON输出中删除所有数组中数字的双引号。 e.g。
["123","345","5567" ...]
应该成为:
[123, 345, 5567 ...]
我可以使用以下内容找到数组部件:
/\[("(?<name>\d+)"[,]*)*\]/
但是,我没有成功将(?<name>\d+)
替换为$+{name}
因为$+{name}
多次出现......有人可以解雇我吗?
答案 0 :(得分:5)
您可以使用JSON
模块将数据读入Perl数据结构,将字符串转换为数字,然后再次输出json:
use strict;
use warnings;
use Data::Dumper;
use JSON;
my $string = qq(["123","345","5567"]);
my $data = from_json($string);
print Dumper to_json($data); # datastructure before conversion
$_ += 0 for @$data;
print Dumper to_json($data); # after
<强>输出:强>
$VAR1 = '["123","345","5567"]';
$VAR1 = '[123,345,5567]';
当然,这只适用于数字字符串,因此如果您的数字中包含非数字,则需要验证数据。