+ -
当前位置:首页 → 问答吧 → perl 如何访问json对象中的元素

perl 如何访问json对象中的元素

时间:2011-03-08

来源:互联网

大家好,我有这样一个json数据文件 file:

{"name":"china","province":[{"p_name":"shanxi","p_num":"1024"},{"p_name":"shandong","p_num":"2048"}]}

用这样一个脚本进行处理可以输出json对象:
  1. #!/usr/bin/perl -w
  2. use strict;
  3. use Data::Dumper;
  4. use JSON;

  5. my $json = new JSON;
  6. my $js;

  7. open JFILE, "file2";
  8. while(<JFILE>) {
  9.         $js .= "$_";
  10. }
  11. my $obj = $json->decode($js);
  12. print Dumper $obj
复制代码
输出内容为:
$VAR1 = {
          'name' => 'china',
          'province' => [
                          {
                            'p_name' => 'shanxi',
                            'p_num' => '1024'
                          },
                          {
                            'p_name' => 'shandong',
                            'p_num' => '2048'
                          }
                        ]
        };

我现在想要在perl脚本中输出 p_name 为 shanxi 的 这项对应的 p_num 的数值,即 1024, 不知这个可以怎么输出呢?

作者: dolinux   发布时间: 2011-03-08

  1. my $num = ${${${$VAR1}{'province'}}[0]}{'p_num'};
  2. print $num,"\n";
复制代码

作者: Cu_fans   发布时间: 2011-03-08

回复 Cu_fans


    多谢你的回答,但是我使用之后显示:
Global symbol "$VAR1" requires explicit package name at ./get.pl line 16.

不知道是为什么,还请多多指点哈~~

作者: dolinux   发布时间: 2011-03-08

$VAR1前加上 my

作者: Cu_fans   发布时间: 2011-03-08

$obj->{province}->[0]->{p_num}

作者: zhlong8   发布时间: 2011-03-08

回复 Cu_fans


    加上my之后还是有错误提示:  Can't use an undefined value as a HASH reference at ./get.pl line 16,

这个应该是不能直接使用 VAR1这个变量吧。

作者: dolinux   发布时间: 2011-03-08

回复 zhlong8


        多谢多谢,这个方法可以~~~

另外大家有没有一些关于 perl 处理json数据的资料或者例子呢? 借来共享下~~

作者: dolinux   发布时间: 2011-03-08



QUOTE:
Cu_fans 发表于 2011-03-08 14:53




    这个写法真蛋疼。。。

作者: jin2251138   发布时间: 2011-03-08