2016-01-12 97 views
0

我只是试图登录JSON一些ANSI编码的造型,在Node.js的,这里是代码,有几个例子:节点JS,JSON记录与ANSI代码

let s = chalk.green('Hello World') 
let o = {s} // or {s: s} 

console.log(s) 
console.log(o) 
console.log(o.s) 
console.log(JSON.stringify(o)) 

(注: chalk就像colors

但是,在记录对象或对其进行字符串化时,格式化会被转义。有什么办法可以预防它吗?
结果: enter image description here

所以它就像记录\u001b[32mHello World\u001b[39m\\u001b[32mHello World\\u001b[39m(带双\

PS:我知道有解决方法的100而我偶然发现了这个问题,我一直在寻找一个解决方案简单谢谢!

+0

你想达到的最终结果是什么? –

+0

记录对象时有颜色。或者在使用'JSON.stringify'时不转义样式代码。 – Cohars

+0

所以你想要'{“s”:“Hello World”}'Hello World是绿色的? –

回答

0

我发现了一个(一种肮脏的)修正:

JSON.stringify(o) 
    .replace(/\\/g, '') 
    .replace(/u001b/g, '\u001b') 

因此,如果字符串包含\u001bstringify会逃避它:\\u001b。通过替换/\\/g它实际上只匹配\,但它似乎也是由stringify添加的那个。
第二个replace将重新添加,只有一个和未经测试\。这是迄今为止我所得到的最好。