为什么我会收到“Usage:JSON :: XS :: new(klass)”错误?

时间:2011-09-21 18:13:17

标签: json perl

这一行
my $json = new JSON(autoconv => 0); # <-- line X
引发此错误

Usage: JSON::XS::new(klass) at (...) line X

怎么了?

这是我的问题Is there a way to force quotation of numbers in JSON 1.x Perl module?

的后续跟进

2 个答案:

答案 0 :(得分:3)

JSON模块changed substantially1.15和2.00之间的API。为JSON 1.x编写的代码不一定适用于JSON 2.x.特别是,1.x构造函数采用了可选参数。 2.x构造函数不带参数;相反,你在构造之后使用mutator函数。

如果由于某种原因必须同时支持JSON 1.x和2.x,那么如果计算2.x的开发版本,则需要检查JSON->VERSION < 2(实际为JSON->VERSION < 1.99 API)并且有两个版本的代码,一个用于1.x API,另一个用于2.x。

答案 1 :(得分:0)

尝试:

my $json = JSON::XS->new;

我在JSONJSON::XS中看不到任何autoconv,但JSON确实这样说:

  

$ JSON ::自动转换

     

不用。 JSON后端模块具有往返完整性。