从JSON文件读取和解析原始数据

时间:2018-11-25 21:34:08

标签: node.js json parsing electron fs

我正在使用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'));

1 个答案:

答案 0 :(得分:2)

您的JSON包含单引号,而不是双引号,这将引发错误。
您还使用ANSI转义代码,而不是UTF-16代码。 JSON使用UTF-16代码,因此当您的Javascript尝试读取JSON时会产生错误。
也有可能您使用的是UTF-8转义码,与ANSI共享127个相同的字符。在这种情况下,您可以使用http://www.fileformat.info/info/unicode/将命令转换为UTF-16。