arrays - 将 JSON 对象列表解码为 perl 中的哈希数组

标签 arrays json perl

我是Perl的新手,我想将以下JSON解析成哈希数组,(首选map方法)

[
    {   "name" : "Theodor Nelson",
        "id": "_333301",
        "address": "Hello_world"
    },
    {   "name": "Morton Heilig",
        "id": "_13204",
        "address": "Welcome"
     }
    ]

然后只想打印“

name

id

在 foreach 循环中的值。 任何形式的帮助将不胜感激。

最佳答案

use JSON qw(from_json);

# The JSON module likes to die on errors
my $json_data = eval { return from_json($json); };
die "$@ while reading JSON" if $@; # Replace by your error handling
die "JSON top level is no array" unless ref($json_data) eq 'ARRAY'; # Replace by your error handling

for my $hashref (@{$json_data}) {
    print $hashref->{name}."\n";
    print $hashref->{id}."\n";
}

根据您的使用情况,错误处理显然是可选的。一次性或手动脚本可能会死掉,而生产级脚本应该有适当的错误处理。

JSON模块是 JSON::PP 的包装器和 JSON::XS .它选择本地系统上可用的模块。 JSON::XS 更快,但可能未安装。 JSON::PP 是纯 Perl(没有外部 C/C++ 库)并且是 Perl 核心的一部分。

fordereferences the Array-reference代表您的顶级 JSON 数组。每个项目都应该是一个哈希引用。点击链接获取有关每个主题的更多信息。

关于arrays - 将 JSON 对象列表解码为 perl 中的哈希数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36846147/

相关文章:

c++ - 使用 memcpy 函数复制 char 数组 C++

c# - AddIfNotNull Dictionary<string, dynamic> 方法

perl - 为什么 perl 不关心我是否在限制条件下声明了我的变量?

php - 尝试使用 mysql 中的数组在 PHP 中以某种方式格式化 json

linux - 我可以从另一个完全独立的脚本中运行一个 Perl 脚本吗?

php - 哪个 Blowfish 算法最多 'correct' ?

javascript - 重新渲染 Prop 时保持数组有序

php - 使用PHP将一个字符串分成两个等长的部分

c++ - 使用多态基类(包含虚函数)访问时数组元素的类型

javascript - ReactJS onChange,如果嵌套 hash/json