有没有办法用JSON Perl模块编码对象构造函数?

时间:2010-11-15 19:57:54

标签: perl json

所有

我正在使用JSON Perl模块对JSON进行编码。

我希望生成的JSON包含这样的行:

{
   "startDate": new Date(2010,11,15,0,0),
   "aString"  : "String Data",
   "aNumber"  : 1234
}

为了创建它,我有一个像这样的Perl HASHREF:

{
   startDate => SEE BELOW,
   aString   => "String Data",
   aNumber   => 1234,
}

这是我的问题:我无法弄清楚如何强制JSON模块打印不带引号的字符串,以便我可以包含我的new Date(...)实例化调用。我尝试使用TO_JSON方法创建一个Perl模块,但输出仍然被引用。

有没有人建议我如何鼓励JSON打印不带引号的字符串?

3 个答案:

答案 0 :(得分:5)

JSON并不意味着对这样的对象进行编码。它编码简单的数据结构,如数组和散列。如果您希望使用该反序列化数据来填充受祝福的对象,则需要在顶部添加另一个图层。

对于Moose个对象,插件MooseX::Storage专为此目的而构建。

答案 1 :(得分:3)

您想要的内容在JSON中无效。有关JSON中的有效值,请参阅http://www.json.org/。 我将日期作为数组返回,然后在你的js处理程序中使用它来创建Date对象。

答案 2 :(得分:2)

也许您应该重新考虑一下这个问题的方法,例如,单独留下JSON模块但是对其输出进行后处理?例如,提出一些约定来表明接收器应该对输入做一些特殊的事情:

{
   "startDate": "EVAL:new Date(2010,11,15,0,0)",
   "aString"  : "String Data",
   "aNumber"  : 1234
}

让接收者(Perl?JavaScript?)查找以关键字"EVAL:"开头的哈希值,并对该值执行进一步处理。