У меня есть скрипт perl, который вызывает aС# exe. Мне нужно передать такую структуру данных, как это
testA => 123, testB => 111 etc
Мне нужно построить эту переменную в perl и передать ее в мой С# exe в качестве параметра командной строки.
Я выбрал сохранить это значение как хэш в perl и keyvaluepair в С#.
Итак, в Perl-коде я создаю
%test_id
У меня проблемы с передачей программы. Я пробовал несколько вещей, но кажется, что с обеих сторон требуется синтаксический анализ. Как конвертировать хеш в строку; а затем преобразовать строку в kvp на стороне С#. Ожидается ли это или есть лучший способ сделать это.
Вот один из моих подходов.
for(keys %ids)
{
my $key = join (":", $_, $ids{$_});
$name = join (";", $key, $name);
}
Я вызвал С# exe с
UpdateCode.exe -add $name;
который будет подобен
UpdateCode.exe -add "testA:123;testB:111"
Итак, когда код С# видит это. я должен сделать
string[] splits = args[1].split(new char[] {';'});
foreach(string split in splits)
{
//You get the idea
//split again and construct KVP
}
Кажется, что много кода. Есть ли способ лучше? Я пробовал Dumper в модуле perl, но даже с этим мне понадобился бы парсинг на стороне С#.
Спасибо, что посмотрели
Используйте JSON
.
В С# существуют эквивалентные библиотеки для декодирования сериализованных данных.
use strict;
use warnings;
use JSON;
my %test_id = ( testA => 123, testB => 111 );
print encode_json(\%test_id);
Выходы:
{"testA":123,"testB":111}
C# Decode JSON