【发布时间】:2016-06-13 05:40:34
【问题描述】:
我有一大块 json,格式如下:
{"page":{"size":7,"number":1,"totalPages":1,"totalElements":7,"resultSetId":null,"duration":0},"content":[{"id":"787edc99-e94f-4132-b596-d04fc56596f9","name":"Verification","attributes":{"ruleExecutionClass":"VerificationRule"},"userTags":[],"links":[{"rel":"self","href":"/endpoint/787edc99-e94f-4132-b596-d04fc56596f9","id":"787edc99-e94f-...
基本上 size 属性(在这种情况下)告诉我内容部分有 7 个部分。如何将这块 json 转换为 Perl 中的数组,我可以使用 size 属性吗?或者有没有更简单的方法,比如只使用 decode_json()?
这是我目前所拥有的:
my $resources = get_that_json_chunk(); # function returns exactly the json you see, except all 7 resources in the content section
my @decoded_json = @$resources;
foreach my $resource (@decoded_json) {
我也试过这样的:
my $deserialize = from_json( $resources );
my @decoded_json = (@{$deserialize});
我想遍历数组并处理数据。我尝试了几种不同的方法,因为我阅读了一些关于数组引用的信息,但我不断收到“不是数组引用”错误和“不能使用字符串(“{“page”:{“size”:7,” number":1,"to"...) 作为 ARRAY ref 而使用“strict refs””
【问题讨论】:
-
my $obj = decode_json($json); print "$_->{id}\n" for @{$obj->{content}}; -
在您的第一次尝试中,您尝试将字符串视为数组引用。那是行不通的(显然)。您的第二次尝试更接近,但现在您将哈希引用视为数组引用。您需要访问生成的哈希引用中的
content键并取消引用 that 作为数组引用。