2014-09-11 36 views
1

我有一个调用c#exe的perl脚本。我需要传递一个数据结构是这样将Perl哈希变换为c#keyvaluepair

testA => 123, testB => 111 etc 

我需要构建这个变量在Perl和它传递给我的C#exe文件作为命令行参数。

我选择在c#中将此值存储为perl和keyvaluepair中的散列值。

所以,在Perl代码,我构建

%test_id 

我有把它传递给程序的麻烦。我尝试了一些东西,但似乎有两方面都需要解析。像转换哈希到字符串;然后在c#端将字符串转换为kvp。这是预期还是有更好的方法来做到这一点。

这是我尝试过的一种方法。

for(keys %ids) 
{ 
    my $key = join (":", $_, $ids{$_}); 
    $name = join (";", $key, $name); 
} 

我打电话与

UpdateCode.exe -add $name; 

C#exe文件,这将是像

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

您需要序列化和反序列化_somehow_因为CLI参数始终是纯文字。 – knittl 2014-09-11 08:45:35

+1

双方都使用JSON,已经有序列化和反序列化的库。 – choroba 2014-09-11 08:47:13

回答

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} 
+0

感谢您的回复。我仍然需要编写与c#端解析相同的代码吗? – user3606175 2014-09-11 08:53:54

+1

只是谷歌'C#解码JSON' – Miller 2014-09-11 08:57:22