[英]How can I parse a string with a date calculation like now + 1 days into a date object?
[英]How can I parse JSON string with new Date() and get a Date property in the object?
有人知道解析后如何獲取帶有實際Date
對象的MyDate
屬性嗎?
var myObject = JSON.parse('{ "MyDate" : new Date ("2013-12-13"), "Test" : "TestString"}');
我有一個包含數千條JSON記錄的文件,並且正在使用NodeJS導入它
var content = require('./content.json');
如果有人知道特殊引號之類的技巧,那將非常棒。
在這兩種情況下,我都會遇到此異常:
SyntaxError: Unexpected token e at Object.parse (native) at repl:1:6 at REPLServer.self.eval (repl.js:110:21) at repl.js:249:20 at REPLServer.self.eval (repl.js:122:7) at Interface. (repl.js:239:12) at Interface.EventEmitter.emit (events.js:95:17) at Interface._onLine (readline.js:202:10) at Interface._line (readline.js:531:8) at Interface._ttyWrite (readline.js:760:14)
我很好奇,JSON是從哪里來的? 沒有表示日期的標准,因此此類擴展可能很有趣。
無論如何,這不是經典的JSON。 有數十種不同的JSON風格,但看起來與我所了解的不一樣。 這並不意味着您的格式不好,而是意味着標准JSON.parse在這里無法使用。
但是,您可以使用YAML解析器對其進行解析,在這種情況下,Date將表示為字符串,以后可以替換。
這是處理這種格式的方法:
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"}');
如Wikipedia所述,JSON支持某些JavaScript本機數據類型,而其他一些則不支持:
http://en.wikipedia.org/wiki/JSON#Unsupported_native_data_types
因此,我無法以自己想要的方式做我想做的事,但這並不重要。 我可以使用字符串,以后再將其格式化。
謝謝您的幫助!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.