我怎样才能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,稍后将其格式化。
感谢您的帮助!