【问题标题】:Accessing JSON with a variable using square bracket notation not working in node.js Javascript使用方括号表示法访问带有变量的 JSON 在 node.js Javascript 中不起作用
【发布时间】:2021-09-14 21:44:10
【问题描述】:

我正在使用 node.js。我使用 JSON 从文件中读取对象。

vc_channels.json 文件:

{
  "​hangout-room": "hangout-room is a voice and/or video room for anything sfw and not necessarily related to meditation."
}

要阅读的代码:

  fileContent = fs.readFileSync('./vc_channels.json');
  vc_channels = JSON.parse(fileContent);

但是当我尝试访问时:

          console.log(vc_channels);
          console.log(channel.name);
          item.topic = vc_channels[channel.name];
          console.log(item.topic);

结果未定义:console.log

{
  '​hangout-room': 'hangout-room is a voice and/or video room for anything sfw and not necessarily related to meditation.'
}
hangout-room
undefined

有人知道我做错了什么吗?

【问题讨论】:

    标签: javascript node.js json


    【解决方案1】:

    如果我复制vc_channels.json 的文本,我可以看到"​hangout-room" 部分内有一个\u200b(零宽度空间):

    在下面的截图中,我们可以看到第一个 ASCII 码是200b,然后是68,即h,依此类推:

    const x = "​hangout-room";
    
    // This prints: [200b","68", "61", "6e", "67", "6f", "75", "74", "2d", "72", "6f", "6f", "6d"]
    console.log(x.split('').map(c => c.charCodeAt().toString(16)));

    所以你只需要从那里删除零宽度空格字符。只需将其输出复制到您的 json 文件中:"​hangout-room".replace('/200b', '') 或使用任何可以显示这种奇怪字符并让您将其删除的文本编辑器。

    【讨论】:

    • 谢谢。是的,就是这样。我手动编辑了 JSON,并注意到删除属性名称需要额外的退格键。通过滑动和粘贴进行复制是错误的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-18
    • 2014-11-23
    • 2015-08-06
    • 1970-01-01
    相关资源
    最近更新 更多