Преобразование Perl Hash в c # keyvaluepair

1

У меня есть скрипт 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, но даже с этим мне понадобился бы парсинг на стороне С#.

Спасибо, что посмотрели

  • 0
    Вы должны сериализации и десериализации это как - то , так как параметры CLI всегда TextOnly.
  • 1
    Используйте JSON с обеих сторон, библиотеки для сериализации и десериализации уже есть.
Теги:

1 ответ

2

Используйте JSON.

В С# существуют эквивалентные библиотеки для декодирования сериализованных данных.

use strict;
use warnings;

use JSON;

my %test_id = ( testA => 123, testB => 111 );

print encode_json(\%test_id);

Выходы:

{"testA":123,"testB":111}
  • 0
    Спасибо за ваш ответ. Нужно ли мне писать тот же код, что и для синтаксического анализа на стороне c #?
  • 1
    Просто Google C# Decode JSON

Ещё вопросы

Сообщество Overcoder
Наверх
Меню