【问题标题】:Convert json to array using Perl使用 Perl 将 json 转换为数组
【发布时间】: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 作为数组引用。

标签: json perl


【解决方案1】:

感谢马特·雅各布:

my $deserialized = decode_json($resources); 
print "$_->{id}\n" for @{$deserialized->{content}};

【讨论】:

    猜你喜欢
    • 2019-05-02
    • 1970-01-01
    • 2014-04-26
    • 2015-04-11
    • 2011-12-17
    • 2017-09-17
    • 1970-01-01
    • 2011-08-12
    • 2017-03-15
    相关资源
    最近更新 更多