0

我正在尝试从 JSON 输出中去除所有数组中数字的双引号。例如

["123","345","5567" ...]

应该变成:

[123, 345, 5567 ...]

我可以使用以下方法定位数组部分:

/\[("(?<name>\d+)"[,]*)*\]/

但是,我没有成功替换(?<name>\d+)$+{name}因为有多次出现$+{name}......有人可以告诉我吗?

4

1 回答 1

5

您可以使用模块将数据读入 Perl 数据结构JSON,将字符串转换为数字,然后再次输出 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]';

当然,这仅适用于数字字符串,因此如果其中有非数字,则需要验证数据。

于 2013-10-24T10:29:07.803 回答