使用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来表示文件句柄 调试时,请确保您的json有效.从cpan到0700或JSON::XS附带的json_xs实用程序. JSON可以描述复杂的数据结构,因此当您将其解析为Perl时,您也会获得复杂的数据结构.首先尝试使用Data::Dumper或Data::Printer或Data::TreeDumper查看数据结构 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |