从 JSON 文件读取和解析原始数据
Posted
技术标签:
【中文标题】从 JSON 文件读取和解析原始数据【英文标题】:Reading and parsing raw data from JSON file 【发布时间】:2019-04-27 13:46:46 【问题描述】:我正在使用 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】:您的 JSON 包含单引号,而不是双引号,这会引发错误。 您还使用 ANSI 转义码,而不是 UTF-16 码。 UTF-16 代码是 JSON 使用的,因此当您的 javascript 尝试读取 JSON 时会产生错误。 也有可能您使用的是 UTF-8 转义码,它与 ANSI 共享 127 个相同的字符。在这种情况下,您可以使用 http://www.fileformat.info/info/unicode/ 将您的命令转换为 UTF-16。
【讨论】:
JSON 使用 UTF-16 转义\uHHHH
,就像 JavaScript(以及 Java、C# 等)一样。 [JavaScript 根本不做 ASCII。 \xHH 适用于 ISO 8859-1。]
不,JSON 不适用于这些;但是,如果您在网上查找,您可能会找到 UTF-16 等价物。此外,您可能使用的是 UTF-8;前 127 个字符的 ANSI 和 UTF-8 相同。
我使用您的网站将所有内容从 UTF-8 更改为 UTF-16,现在可以正常使用,非常感谢您的帮助!以上是关于从 JSON 文件读取和解析原始数据的主要内容,如果未能解决你的问题,请参考以下文章