我在通過YAML在Perl和Ruby之間交換數據時遇到了問題。我有一些看起來像number:number的值,如1:16
。Perl與Ruby之間的YAML數據交換問題
Perl的YAML庫(Tiny和XS)將其編碼爲1:16
而不含引號。 Ruby的YAML庫(Psych)不會將其解釋爲字符串,而是以某種方式成爲Fixnum值4560
。我無法弄清楚如何解決這個轉換問題。
對於我的用例,YAML中的每個值應該是一個對象或字符串。所以,如果存在這樣的選項,我可以告訴Perl YAML庫引用所有值。或者有什麼辦法可以告訴Ruby YAML庫將所有值解釋爲字符串?有任何想法嗎?
改變任何一方的語言在邏輯上不是一種選擇。
的Perl:
use YAML::XS qw(DumpFile);
my $foo={'abc'=>'1:16'};
DumpFile('test.yaml',$foo);
紅寶石:
require('yaml')
foo=YAML.load_file('test.yaml')
puts(foo['abc'])
的Ruby代碼將打印4560
。其中一條評論告訴你如何從1:16
得到4560
,這是1小時16分鐘轉換爲秒數。呃,好吧。
您能否提供一些示例YAML數據以及您用於解碼的Ruby和Perl代碼? – Schwern
4560是1小時16分鐘內的秒數(假設沒有閏秒)。 – ikegami
生成的YAML文件是什麼樣的? – bta