我正在使用QzTray通过我的nodejs应用程序打印收据。我必须创建一个看起来像
的json数组[
'\x1B'+'\x40',
'\x1B'+'\x61'+'\x31',
'Beverly Hills, CA 90210'+'\x0A',
'\x0A',
'www.qz.io'+'\x0A',
'\x0A',
'\x0A',
'May 18, 2016 10:30 AM'+'\x0A',
'\x0A',
'\x0A',
'\x0A',
'Transaction # 123456 Register: 3'+'\x0A',
'\x0A',
'\x0A',
'\x0A',
'\x1B'+'\x61'+'\x30',
'Baklava (Qty 4) 9.00'+'\x1B'+'\x74'+'\x13'+'\xAA',
'\x0A',
'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'+'\x0A',
'\x1B'+'\x45'+'\x0D',
'Here\'s some bold text!',
'\x0A',
'\x1B'+'\x45'+'\x0A',
'\x1D'+'\x21'+'\x11',
'Here\'s large text!',
'\x0A',
'\x1D'+'\x21'+'\x00',
'\x1B'+'\x61'+'\x32',
'\x1B'+'\x21'+'\x30',
'DRINK ME',
'\x1B'+'\x21'+'\x0A'+'\x1B'+'\x45'+'\x0A',
'\x0A'+'\x0A',
'\x1B'+'\x61'+'\x30',
'------------------------------------------'+'\x0A',
'\x1B'+'\x4D'+'\x31',
'EAT ME'+'\x0A',
'\x1B'+'\x4D'+'\x30',
'------------------------------------------'+'\x0A',
'normal text',
'\x1B'+'\x61'+'\x30',
'\x0A'+'\x0A'+'\x0A'+'\x0A'+'\x0A'+'\x0A'+'\x0A',
'\x1B'+'\x69',
'\x10'+'\x14'+'\x01'+'\x00'+'\x05',
]
问题是,当我尝试使用JSON.parse()解析此文件时,总是出现错误
Uncaught SyntaxError: Unexpected token ' in JSON at position 7
at JSON.parse (<anonymous>)
at print (electronAPI_1.0.js:41)
at HTMLInputElement.onclick (index.html:15)
这是我能使用的代码
var jsonConfig1 = JSON.parse(fs.readFileSync('couponConfig1.json', 'utf8'));
答案 0 :(得分:2)
您的JSON包含单引号,而不是双引号,这将引发错误。
您还使用ANSI转义代码,而不是UTF-16代码。 JSON使用UTF-16代码,因此当您的Javascript尝试读取JSON时会产生错误。
也有可能您使用的是UTF-8转义码,与ANSI共享127个相同的字符。在这种情况下,您可以使用http://www.fileformat.info/info/unicode/将命令转换为UTF-16。