【发布时间】:2016-02-29 04:54:09
【问题描述】:
我有一个 Perl Data::Dumper 文件 (data.txt),其中包含两个需要转换为 JSON 的数组。
这是我的 data.txt:
$stats = {
'oldtime' => '04',
'parsedlines' => 8,
'day_lines' => [
undef,
8
],
'actions' => {
'microbe' => 1
},
'lastnick' => 'Sky',
'words' => {
'Sky' => 1,
'microbe' => 9
},
'times' => {
'04' => 8
},
'totallines' => 8,
'word_times' => {
'microbe' => [
9
],
'Sky' => [
1
]
},
'lastvisited' => {
'microbe' => 1,
'Parts:' => 1,
'Sky' => 1
},
'line_times' => {
'microbe' => [
3
],
'Sky' => [
1
]
},
'lengths' => {
'microbe' => 36,
'Sky' => 11
},
'lastnormal' => '[04:35:01] <Sky> ;algkagkaga
',
'day_times' => [
undef,
[
8,
0,
0,
0
]
],
'days' => 1,
'joins' => {
'microbe' => 1,
'Sky' => 1
},
'monocount' => 0,
'lines' => {
'Sky' => 1,
'microbe' => 3
}
};
$lines = {
'actionlines' => {
'microbe' => [
'[04:33:53] * microbe is doing just a test
'
]
},
'sayings' => {
'Sky' => [
';algkagkaga'
],
'microbe' => [
'Hello'
]
}
};
如您所见,有 2 个数组:$stats 和 $lines。
我想将它们转换为 JSON。
这里有人(Borodin)提出了一个可行的解决方案,但它只输出第二个数组($lines)。这是他的解决方案:
use strict;
use warnings qw/ all FATAL /;
use JSON;
print encode_json( do 'data.txt' or die $! ), "\n";
但这是它的输出:
{
"actionlines":{
"microbe":[
"[04:33:53] * microbe is doing just a test\n"
]
},
"sayings":{
"microbe":[
"Hello"
],
"Sky":[
";algkagkaga"
]
}
}
所以它只输出 $lines 数组...知道我可以做些什么来让它工作吗?
【问题讨论】:
-
您的original question 非常清楚地表明您的数据文件只有一个数组