首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将散列数组转换为json

将散列数组转换为json
EN

Stack Overflow用户
提问于 2012-12-31 06:37:07
回答 3查看 11.7K关注 0票数 4

我想转换我创建的散列数组,如下所示:

代码语言:javascript
复制
while(...)
{
    ...
    push(@ranks, {id => $id, time => $time});
}

到JSON:

代码语言:javascript
复制
use JSON;
$j = new JSON;
print $j->encode_json({ranks => @ranks});

但它输出的是:

代码语言:javascript
复制
{"ranks":{"time":"3","id":"tiago"},
 "HASH(0x905bf70)":{"time":"10","id":"bla"}}

正如你所看到的,它不能写散列,也没有数组…

我想输出一个JSON字符串,如下所示:

代码语言:javascript
复制
 {"ranks":[{"time":"3","id":"tiago"},
           {"time":"40","id":"fhddhf"},
           {"time":"10","id":"bla"}]}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-12-31 06:56:08

代码语言:javascript
复制
print $j->encode_json({ranks => @ranks});

应该是:

代码语言:javascript
复制
print $j->encode_json({ranks => \@ranks});
票数 6
EN

Stack Overflow用户

发布于 2012-12-31 07:04:17

所有这些都是相同的:

代码语言:javascript
复制
ranks => @ranks

'ranks', @ranks

'ranks', $ranks[0], $ranks[1], $ranks[2]

ranks => $ranks[0], $ranks[1] => $ranks[2]

因此,当您打算创建一个包含一个元素的散列时,您创建的是一个包含两个元素的散列。

您试图使用数组作为哈希值,但哈希值只能是标量。但是,使用对数组的引用作为散列值是很常见的,因为引用是标量,这也是encode_json所期望的。

代码语言:javascript
复制
print $j->encode_json( { ranks => @ranks } );

应该是

代码语言:javascript
复制
print $j->encode_json( { ranks => \@ranks } );
票数 7
EN

Stack Overflow用户

发布于 2012-12-31 06:55:59

尝试将数组作为引用传递。

to_json({ranks => \@ranks},{ascii => 1,pretty => 1});

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14095410

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档