我怎样才能parsingJSONstring与新的date(),并得到一个date属性的对象?

有谁知道我怎么能parsing后得到一个实际的Date对象的MyDate属性?

 var myObject = JSON.parse('{ "MyDate" : new Date ("2013-12-13"), "Test" : "TestString"}'); 

我有一个JSON数千个logging的文件,我正在用NodeJS导入它

 var content = require('./content.json'); 

如果有人知道像特殊引号之类的伎俩,这将是非常棒的。

在这两种情况下,我得到这个例外:

 SyntaxError:意外的令牌e
    在Object.parse(native)
    在复制:1:6
    在REPLServer.self.eval(repl.js:110:21)
    在repl.js:249:20
    在REPLServer.self.eval(repl.js:122:7)
    在界面。  (repl.js:239:12)
    在Interface.EventEmitter.emit(events.js:95:17)
    在Interface._onLine(readline.js:202:10)
    在Interface._line(readline.js:531:8)
    在Interface._ttyWrite(readline.js:760:14)

我很好奇,JSON来自哪里? 没有标准来表示date,所以这样的扩展可能是有趣的。

无论如何,这不是一个经典的JSON。 有几十个不同的JSON风格,但它看起来不像我所知道的。 这并不意味着你的格式不好,但是这意味着标准的JSON.parse在这里不起作用。

但是,您可以使用YAMLparsing器parsing它,在这种情况下,Date将被表示为稍后可以replace的string。

这是如何处理这种格式:

 var YAML = require('js-yaml') var object = YAML.safeLoad('{ "MyDate" : new Date ("2013-12-13"), "Test" : "TestString"}') function parse_dates(v) { if (typeof(v) === 'object') { for (var i in object) { v[i] = parse_dates(v[i]) } } else if (typeof(v) === 'string') { var m = v.match(/^new Date\s*\(["'](.*)["']\)$/) if (m != null) { return new Date(m[1]) } } return v } console.log(parse_dates(object)) 

结果:

 $ TZ=UTC node test.js { MyDate: Fri Dec 13 2013 00:00:00 GMT+0000 (UTC), Test: 'TestString' } 

只要做到这一点

 var myObject = JSON.parse('{ "MyDate" : "'+new Date ("2013-12-13")+'", "Test" : "TestString"}'); 

正如维基百科所说,JSON支持一些JavaScript本地数据types,而其他一些则不支持:

http://en.wikipedia.org/wiki/JSON#Unsupported_native_data_types

所以我不能按自己想要的方式做我想做的事,但这并不重要。 我可以使用string,稍后将其格式化。

感谢您的帮助!