从 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 文件读取和解析原始数据的主要内容,如果未能解决你的问题,请参考以下文章

读取和解析 SQL 数据库的 JSON 数据

Unity3D读取数据Json文件操作(创建读取解析修改)

Unity3D读取数据Json文件操作(创建读取解析修改)

java怎么读取json格式的数据

java怎么读取json格式的数据

如何从一个文件中读取多个 JSON 数据列表到 Pandas