我有一个调用c#exe的perl脚本。我需要传递像这样的数据结构
testA => 123, testB => 111 etc
我需要在perl中构造这个变量,并将它作为命令行参数传递给我的c#exe。
我选择将此值存储为perl中的hash和c#中的keyvaluepair。
所以,在perl代码中,我正在构建
%test_id
我无法将其传递给该计划。我尝试了一些东西,但似乎双方都需要进行一些解析。就像将hash hash转换为string;然后在c#侧将字符串转换为kvp。这是预期的还是有更好的方法来做到这一点。
这是我尝试过的一种方法。
for(keys %ids)
{
my $key = join (":", $_, $ids{$_});
$name = join (";", $key, $name);
}
我用
调用了c#exe UpdateCode.exe -add $name;
就像
UpdateCode.exe -add "testA:123;testB:111"
所以,当c#代码看到这个时。我必须做
string[] splits = args[1].split(new char[] {';'});
foreach(string split in splits)
{
//You get the idea
//split again and construct KVP
}
似乎很多代码。有没有更好的办法?我在perl模块中尝试过Dumper,但即便如此,我还是需要在c#侧进行解析。
感谢您寻找
答案 0 :(得分:2)
使用JSON
。
C#中有等效的库来解码序列化数据。
use strict;
use warnings;
use JSON;
my %test_id = ( testA => 123, testB => 111 );
print encode_json(\%test_id);
输出:
{"testA":123,"testB":111}