2016-01-12 45 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將重新添加,只有一個和未經測試\。這是迄今爲止我所得到的最好。