0

我想在 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}}"

拿到

'{service:{key:value_{_{key:value_{_service:{key:value_{-'

如果您有任何转换为​​预期角色的想法,请告诉我。

提前致谢。

4

1 回答 1

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_-_-')

因此,从您匹配的所有键中创建一个正则表达式并替换为相应的值......

于 2013-07-16T07:12:25.527 回答