2012-01-23 15 views
4

我使用Nodejs和mongoskin将数据作为JSON格式存储在mongo表中。 Mongo自动在json格式的数据中添加斜杠。然后当我检索时,我无法解析数据。请建议我,我如何删除斜线或我如何解析数据?如何使用Nodejs在Mongo中删除JSON格式数据中的斜杠?

db.messagetable.find().forEach(printjson) 
{ 
     "_id" : "1861574", 
     "MatriId" : "1861574", 
     "session" : "{\"messages\":{\"cometchat\":{\"timedifference\":0,\"cometchat_buddytime\":0,\"msgavails\":\"\"}}}", 
     "expires" : 1341702134 
} 

回答

5

这里slahses用来逃避你的JSON编码字符串的charatcer "(不是JSON对象,因为

> JSON.parse("{messages:1}") 
SyntaxError: Unexpected token m 
    at Object.parse (native) 
    at repl:1:7 
    at REPLServer.eval (repl.js:80:21) 
    at Interface.<anonymous> (repl.js:182:12) 
    at Interface.emit (events.js:67:17) 
    at Interface._onLine (readline.js:162:10) 
    at Interface._line (readline.js:426:8) 
    at Interface._ttyWrite (readline.js:603:14) 
    at ReadStream.<anonymous> (readline.js:82:12) 
    at ReadStream.emit (events.js:88:20) 

,因此密钥必须与"封闭来表示一个字符串,但你不能只是把"里面的字符串。为了解决这个问题JSON解析器追加\

> JSON.parse("{\"messages\":1}") 
{ messages: 1 } 

所以当你分析,只需拨打会话串JSON.Parse

> JSON.parse("{\"messages\":{\"cometchat\":{\"timedifference\":0,\"cometchat_buddytime\":0,\"msgavails\":\"\"}}}") 
{ messages: 
    { cometchat: 
     { timedifference: 0, 
     cometchat_buddytime: 0, 
     msgavails: '' } } } 
1

斜杠不在字符串中。斜杠用于表示字符,如",因为"用作字符串的起始/结束分隔符。

如果您打印的是该对象的console.logsession,则会打印出斜线。

没有斜线。