我在JSON文件中获取用户名字符串时难以解析为具有正确值的Javascript对象。这是一项艰巨的任务,因此它正在使用JSON.parse()
的node.js实现。
我们有一个FTP用户名(由azure提供,不可更改),格式为"domain\$username"
。我们需要一个Grunt任务,以该格式提供此用户名以进行FTP推送。
我已经启动了一个节点实例并运行了一些不同级别的反斜杠转换的排列,以了解如何处理它。
(格式:Input
=> Parse Result
)
{ "user": "domain\$username" }
=> { user: 'domain$username' }
(好像是\逃脱了$){ "user": "domain\\$username" }
=> Unexpected token $
(似乎$需要转义){ "user": "domain\\\$username" }
=> Unexpected token $
(什么?!?){ "user": "domain\\\\$username" }
=> { user: 'domain\\$username' }
(所以反斜杠被转义,现在$不需要转义?){ "user": "domain\\\\\$username" }
=> {user: 'domain\\$username' }
(欢迎来到crazytown。)我们如何格式化JSON文件中的用户名,以便node.js的解析器输出domain\$username
?
答案 0 :(得分:0)
> var username = 'domain\\$username'; console.log(username);
> domain\$username
...哼
> var config = { user: 'domain\\$username' }; console.log(config.user);
> domain\$username
好吧 - 所以两张斜线应该是票?但那给了我们一个unexpected token $
错误。
> var input = JSON.stringify({user:'domain\\$username'}); console.log(input);
> {"user":"domain\\$username"}
> var output = JSON.parse(input); console.log(output.user);
> domain\$username
但等一下......
> input
> '{"user":"domain\\\\$username"}'
> output.user
> 'domain\\$username'
所以console.log
实际上是返回转义的结果,而不是原始值,而只是评估变量会给你原始值(我想如果你考虑它就有意义)。