【问题标题】:Can't use string ("[{"device_name":"iPhone Simulato"...) as an ARRAY ref while "strict refs" in use在使用“strict refs”时,不能使用字符串 ("[{"device_name":"iPhone Simulato"...) 作为 ARRAY refs
【发布时间】:2023-03-14 04:20:01
【问题描述】:

我有以下结构,它在变量 my @json_device = getDeviceId($Session->{id}); 中返回;

正在显示的结构如下

$VAR1 = [{"device_name":"device1","device_id":"device_id1"},{"device_name":"device2","device_id":"device_id2"}]

我正在使用以下代码遍历数组 refs 并获取“device_name”和“device_id”值

 for my $aref (@json_device){
        for my $href (@$aref){
            warn $href->{device_name};
            warn $href->{device_uuid};
        }
    }

但我收到以下错误 在使用“strict refs”时,不能使用字符串 ("[{"device_name":"iPhone Simulato"...) 作为 ARRAY refs 谁能给我解释一下出了什么问题?

【问题讨论】:

    标签: json perl


    【解决方案1】:

    似乎getDeviceId 不返回 Perl 数据,而是返回 JSON 字符串。你必须转换它:

    use JSON;
    
    # ..
    my $json_device = getDeviceId($Session->{id});
    my $aref        = decode_json($json_device);
    

    【讨论】:

    • 并且还改变for循环如下?对于我的 $arefs ($aref){ 对于我的 $href (@$arefs){ 警告 $href->{device_name};警告 $href->{device_uuid}; } }
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-08
    • 2011-12-19
    • 2014-01-18
    • 1970-01-01
    • 2012-04-13
    • 2017-08-20
    • 1970-01-01
    相关资源
    最近更新 更多