如何解析Perl中的JSON变量?

时间:2013-04-02 05:25:26

标签: perl

我从WEB服务器上读到了这样的数据:

{'status':{"t":1, "f":1, "p":2, "i":1}}

JSON :: XS告诉它似乎不是有效的JSON格式数据。我该如何解析?

3 个答案:

答案 0 :(得分:3)

您可以检查JSON格式here的规范。在您的情况下,问题可能是status周围的单引号。如果您使用常规双引号,则应解析:

{"status":{"t":1, "f":1, "p":2, "i":1}}

您可以在http://jsonlint.com/

检查JSON的有效性

答案 1 :(得分:3)

JSON::XS似乎没有接受单引号的切换,但是JSON确实如此。

use strict;
use warnings;
use JSON -support_by_pp

my $source = q( {'status':{"t":1, "f":1, "p":2, "i":1}} );
my $parsed = JSON->new->allow_singlequote->decode($source);

有关更多选项和详细信息,请参阅JSON module docs

答案 2 :(得分:1)

这是有效的JavaScript。因此,如果您不想编写自己的解析器,请将其传递给JavaScript engine进行评估并转换为JSON。