1

我从 WEB 服务器读取数据,该服务器返回如下数据:

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

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

4

3 回答 3

3

您可以在此处查看 JSON 格式的规范。在您的情况下,问题可能是status. 如果您改用常规双引号,它应该解析:

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

您可以在http://jsonlint.com/检查 JSON 的有效性

于 2013-04-02T05:29:45.850 回答
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 模块文档

于 2013-04-02T14:53:55.883 回答
1

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

于 2013-04-02T06:36:35.647 回答