Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
&引用;不是数组引用“;循环json文件时-Perl_Perl_Loops_Cgi - Fatal编程技术网

&引用;不是数组引用“;循环json文件时-Perl

&引用;不是数组引用“;循环json文件时-Perl,perl,loops,cgi,Perl,Loops,Cgi,我试图通过foor循环读取json文件,但我得到一个错误“notarray reference”,这是我使用的代码 $json_text = JSON::XS->new->utf8->encode ($return); my $decoded_file = decode_json $json_text; for my $items (@{$decoded_file}) { } $decoded_文件: $VAR1 = [ { 'data'

我试图通过foor循环读取json文件,但我得到一个错误“notarray reference”,这是我使用的代码

$json_text = JSON::XS->new->utf8->encode ($return); 
my $decoded_file = decode_json $json_text;

for my $items (@{$decoded_file}) {

} 
$decoded_文件:

$VAR1 = [
      {
        'data' => {
                   'id' => 0,   
                   'type' => 'car',
                   'details' => [
                                 {
                                   'year' => '2001',
                                   'color' => 'red', 
                                 }
                               ],
                   'status' => 'Y'
                 },

你所说的不是真的

use strict;
use warnings;

my $decoded_file = [
      {
        'data' => {
                    'status' => 'Y',
                    'id' => 0,
                    'type' => 'car',
                    'details' => [
                                   {
                                     'year' => '2001',
                                     'color' => 'red'
                                   }
                                 ]
                  }
      }                      # Added this.
    ];                       # Added this.

for my $items (@{$decoded_file}) {

}

print "ok\n";
产生

ok

在您向我们展示的内容中,
$decoded_file
包含对数组的引用,因此,您的循环确实是您应该使用的。

您还需要向我们显示用作输入的
$return
$json\u text
。当我用代码其余部分预期的数据填充空格时,该代码不会出错。@Tanktalus$return是一个哈希引用,我现在已经更新了这个问题ucan se$json_text的值,请显示
use Data::Dumper的输出;打印转储程序($return)
。您声称的不是真的。请对您的问题进行最低限度的、可运行的描述。你看,还是有同样的错误,这是我不明白的$return是一个hash ref,$decode_文件也是一个hash ref,我不知道为什么:/Im使用ref($return)ref($decoded_文件),它们都输出ref(hash(0x4884))……在$return中的daya看起来很像$decoded_文件中的daya“仍然得到相同的错误”,您的问题仍然没有说明您的问题。在你真正证明你的问题之前,我们无法帮助你。看见