請問有沒有辦法讓encode_json
方法不要在數字中加引號?如何避免用Perl JSON模塊引用數字引號?
比如我使用的是在CentOS 6.3的Perl 5.10(也是ActiveState的Perl的5.16在Win 7),它把引號,它應該不會:
# perl -MJSON -e 'print encode_json({a => [split(",", "1.2,30")]});'
{"a":["1.2","30"]}
也就是說,確定是的,它在上面的代碼中看到「1.2」和「30」爲字符串,但我的問題是:
我的perl腳本解析CSV文件並生成HTML文件using Google Charts而後者通過引用數字值引起混淆(儘管我告訴他們該列是「數字」類型的)。
作爲一種變通方法我通過我的數據意象結構迭代和sprintf "%f", $val
更換每一個數字,但這會導致過多的空值的每個數字,這使得圖表無誤後進行顯示,但是難看:
# perl -e 'printf "%f", "30"'
30.000000
UPDATE:
是,添零或一個乘以似乎工作第一眼:
# perl -MJSON -e 'print encode_json({a => [map {1 * $_} split(",", "1.2,30")]});'
{"a":[1.2,30]}
但my real script它仍然爲浮點數不起作用。
而且你可以看到這個問題用自卸車模塊太當我還是在CLI:
# perl -MData::Dumper -e 'print Dumper({a => [map {1.0 * $_} split(",", "1.2,30")]});'
$VAR1 = {
'a' => [
'1.2', # <= THIS IS MY PROBLEM AND CONFUSES GOOGLE CHARTS
30
]
};
自卸車總是添加引號浮點數,所以這是完全沒有意義的。 – ikegami
如果該代碼有效,而不是您的「真實腳本」,這是因爲您在「真實腳本」中做了一些不同的事情! – ikegami
我在http://pastebin.com/3sn6yPaD上的真實腳本除了在CSV行上調用'split'然後調用'encode_json'外幾乎沒有什麼作用。而後者在浮點值附加引號,並沒有解決方法幫助那裏。 –