我想转换我创建的散列数组,如下所示:
while(...)
{
...
push(@ranks, {id => $id, time => $time});
}到JSON:
use JSON;
$j = new JSON;
print $j->encode_json({ranks => @ranks});但它输出的是:
{"ranks":{"time":"3","id":"tiago"},
"HASH(0x905bf70)":{"time":"10","id":"bla"}}正如你所看到的,它不能写散列,也没有数组…
我想输出一个JSON字符串,如下所示:
{"ranks":[{"time":"3","id":"tiago"},
{"time":"40","id":"fhddhf"},
{"time":"10","id":"bla"}]}发布于 2012-12-31 06:56:08
print $j->encode_json({ranks => @ranks});应该是:
print $j->encode_json({ranks => \@ranks});发布于 2012-12-31 07:04:17
所有这些都是相同的:
ranks => @ranks
'ranks', @ranks
'ranks', $ranks[0], $ranks[1], $ranks[2]
ranks => $ranks[0], $ranks[1] => $ranks[2]因此,当您打算创建一个包含一个元素的散列时,您创建的是一个包含两个元素的散列。
您试图使用数组作为哈希值,但哈希值只能是标量。但是,使用对数组的引用作为散列值是很常见的,因为引用是标量,这也是encode_json所期望的。
print $j->encode_json( { ranks => @ranks } );应该是
print $j->encode_json( { ranks => \@ranks } );发布于 2012-12-31 06:55:59
尝试将数组作为引用传递。
to_json({ranks => \@ranks},{ascii => 1,pretty => 1});
https://stackoverflow.com/questions/14095410
复制相似问题