我想在perl中将两个字符(“ - ”和“_”)转换为JSON格式。 用作JSON。 但我没能转换。我想知道如何转换这些独特的两个字符。
格式
'--' -> ':'
'-_' -> '{'
'_-' -> '}'
'__' -> ','
这是我的程序
#!/usr/local/bin/perl
use strict;
use warnings;
sub toJsonFormat {
my $self = shift;
my $str = shift;
$str =~ s/-_/{/g;
$str =~ s/_-/}/g;
$str =~ s/--/:/g;
$str =~ s/__/,/g;
return $str;
}
这是样本
尝试代码
toJsonFormat('-_service---_key--value_-__-_key--value_-__service---_key--value_-_-')
预期
"{service:{key:value},{key:value},service:{key:value}}"
GOT
'{service:{key:value_{_{key:value_{_service:{key:value_{-'
如果您有任何想法转换为预期角色,请告诉我。
提前致谢。
答案 0 :(得分:2)
这应该有效:
my %h = (
'--' => ':',
'-_' => '{',
'_-' => '}',
'__' => ',',
);
my $rx = qr(-_|_-|--|__);
sub toJsonFormat {
my $str = shift;
$str =~ s/($rx)/$h{$1}/g;
return $str;
}
print toJsonFormat('-_service---_key--value_-__-_key--value_-__service---_key--value_-_-')
所以从你匹配的所有键中创建一个正则表达式并用相应的值替换......