如何将两个字符(' - '和'_')转换为JSON格式

时间:2013-07-16 06:53:58

标签: regex json string perl converter

我想在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_{-'

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

提前致谢。

1 个答案:

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

所以从你匹配的所有键中创建一个正则表达式并用相应的值替换......