【问题标题】:Unexpected with Boolean when data dumper JSON数据转储器 JSON 时出现布尔值意外
【发布时间】:2018-04-04 18:12:13
【问题描述】:

我的 perl 代码:

#!/usr/bin/perl

if ( not -f "$ARGV[0]" ) { die "$!"; }

open(DATA,"$ARGV[0]") || die "$!";
$data = <DATA>;
close(DATA);

use JSON qw(decode_json);
$tidy = decode_json($data);

use Data::Dumper;
$Data::Dumper::Terse = 1;
#$Data::Dumper::Indent = 1;
$Data::Dumper::Sortkeys = 1;

print Dumper $tidy;

我的 JSON 数据:

[{"n":"v8_skillgames","i":"m1QhFLZ2CI","s":21254,"t":1522783462114739392,"m":false},{"n":"v8_breakaway","i":"kpOIPLacEa","s":6163,"t":1522783462115880128,"m":false}]

意外输出:

[
  {
    'i' => 'm1QhFLZ2CI',
    'm' => bless( do{\(my $o = 0)}, 'JSON::PP::Boolean' ),
    'n' => 'v8_skillgames',
    's' => 21254,
    't' => '1522783462114739392'
  },
  {
    'i' => 'kpOIPLacEa',
    'm' => $VAR1->[0]{'m'},
    'n' => 'v8_breakaway',
    's' => 6163,
    't' => '1522783462115880128'
  }
]

我编写了一些 perl 脚本来解析单行 JSON 数据。 但我得到了关于“m”的意外输出。怎么了?

【问题讨论】:

  • 它只是一个布尔值。像任何其他哈希元素值一样使用它应该没有问题,忽略它实际上是一个对象的事实。

标签: json perl data-dumper


【解决方案1】:

我搜索了谷歌并找到了解决方案:

use JSON::PP qw(decode_json);
$JSON::PP::true  = 'true';
$JSON::PP::false = 'false';

【讨论】:

  • 1.这些变量没有记录,因此将来可能会更改。 2. 为什么要将布尔值作为字符串加载?
  • 我只想正确转储数据。 JSON 查看器之类的东西。
猜你喜欢
  • 1970-01-01
  • 2021-09-08
  • 1970-01-01
  • 2020-12-03
  • 1970-01-01
  • 2022-01-10
  • 1970-01-01
  • 1970-01-01
  • 2016-02-01
相关资源
最近更新 更多