所有
我正在使用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打印不带引号的字符串?
答案 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:"
开头的哈希值,并对该值执行进一步处理。