如何在Perl中将字符串转换为JSON

4

我非常新手perl,所以请在以下方面帮助我

我有一个perl脚本来执行telnet命令。此脚本接收服务器响应作为字符串。实际上,服务器创建一个json字符串,然后发送给客户端程序,但客户端程序将其显示为 string

问题:如何将此字符串转换为json并从该json字符串中读取数据。

我有一个类似于以下结构的json字符串

[{"success":"21","data":[{"name":"tester","lastname":"project"}]}]

以下是我尝试将其转换为JSON的最后几行:
@lines = $telnet->waitfor('/$/');
my @json;
@json = @{decode_json(@lines)};

它将输出打印如下:
HASH(0x1af068c)

Thanks in advance !!!

2个回答

5
我认为有一个更简单的方法:
use JSON ();

$content = "{WHATEVER JSON CONTENT}";

$content = JSON->new->utf8->decode($content);

5
这里有一段代码片段用于将JSON转换。已经修改以捕获错误。
use strict;
use warnings;
use JSON::XS;
use Try::Tiny;
use Data::Dumper::Concise;

my $data = qq<[{"success":"21","data":[{"name":"tester","lastname":"project"}]}]>;

my $decoded;

try {
    $decoded = JSON::XS::decode_json($data);
}
catch {
    warn "Caught JSON::XS decode error: $_";
};

print Dumper $decoded;

非常感谢。 请问你能帮我获取“success”的值吗?我尝试了以下方法,但没有起作用。我确定我做错了什么 :( 。我对perl一无所知 print $decoded->{'success'}; print $decoded['success'];再次感谢! - Yogesh
decode函数在出错时会终止执行。我修改了示例,使用Try::Tiny模块来捕获错误。 - Bill Ruppert
我该如何从$decoded中访问“success”的值,即21? - Yogesh
$decoded->[0]{success} - [0] 是数组索引,{success} 是哈希键。 - Bill Ruppert
我试图访问 $decoded[0]->{"success"},这是个愚蠢的错误。非常感谢! :) - Yogesh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接