加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

使用perl解析json文件

发布时间:2020-12-15 23:30:38 所属栏目:大数据 来源:网络整理
导读:我试图在perl中解析一个json文件.我想提取关键字“名称”及其对应的值. 我的文件看起来像这样 { "data":[ { "name":"ABC","id":"123",},{ "name":"PQR","id":"456",{ "name":"XYZ","id":"789",}]} 我正在尝试下面的代码: #/usr/lib/perluse lib qw( ..);use
我试图在perl中解析一个json文件.我想提取关键字“名称”及其对应的值.
我的文件看起来像这样

{
 "data":[
    {
        "name":"ABC","id":"123",},{
        "name":"PQR","id":"456",{
        "name":"XYZ","id":"789",}
]
}

我正在尝试下面的代码:

#/usr/lib/perl
use lib qw( ..);
use LWP::Simple;
use JSON;
my $filename = '/file.txt';
my $data;
if (open (my $json_str,$filename))
{
  local $/ = undef;
  my $json = JSON->new;
  $data = $json->decode(<$json_str>);
  close($json_stream);
}
print $data->{name};

但我没有得到任何输出.

谁能告诉我什么是错的?

解决方法

您的json文件无效.

第5,10,15行不应以逗号结尾,因为这是这些哈希的最后一个键/值对.

解决之后,这里有一个代码版本,可以为您提供预期的结果:

#/usr/lib/perl
use strict;
use warnings;

use lib qw(..);

use JSON qw( );

my $filename = 'file.txt';

my $json_text = do {
   open(my $json_fh,"<:encoding(UTF-8)",$filename)
      or die("Can't open $filename": $!n");
   local $/;
   <$json_fh>
};

my $json = JSON->new;
my $data = $json->decode($json_text);

for ( @{$data->{data}} ) {
   print $_->{name}."n";
}

一些问题:

>您使用的是$json_stream和$json_str.你打算在所有地方使用$json_stream来表示文件句柄
> $data-> {name}应该应用于.json文件中数组的所有成员,而不是json本身.所以你需要先迭代它们

调试时,请确保您的json有效.从cpan到0700或JSON::XS附带的json_xs实用程序.

JSON可以描述复杂的数据结构,因此当您将其解析为Perl时,您也会获得复杂的数据结构.首先尝试使用Data::Dumper或Data::Printer或Data::TreeDumper查看数据结构

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读